mb_str_split
mb_str_split($string, $length, $encoding)
Zerlegt Text in ein Array von Zeichen oder in Teile mit der angegebenen Anzahl von Zeichen. Anders als str_split() teilt sie nach Zeichen, nicht nach Bytes, deshalb bleiben Umlaute ganz. Die Funktion gibt es seit PHP 7.4.
Parameter
- $string – der zu zerlegende Text.
- $length – optional, die Anzahl der Zeichen in einem Teil. Standardwert ist 1.
- $encoding – optional, die Zeichenkodierung. Standardwert ist der Wert von mb_internal_encoding(), meist UTF-8.
Beispiele
print_r(mb_str_split("Bär")); // Array ( [0] => B [1] => ä [2] => r )
// str_split teilt nach Bytes und schneidet Umlaute in der Mitte durch
echo count(str_split("Bär")); // 4
// Teile zu drei Zeichen
print_r(mb_str_split("Zürichsee", 3)); // Array ( [0] => Zür [1] => ich [2] => see )
// Text rückwärts
echo implode("", array_reverse(mb_str_split("Köln"))); // nlöK
// Leerzeichen zwischen den Buchstaben
echo implode(" ", mb_str_split("ÜBER")); // Ü B E R
// wie oft jeder Buchstabe im Text vorkommt
print_r(array_count_values(mb_str_split("Ananas"))); // Array ( [A] => 1 [n] => 2 [a] => 2 [s] => 1 )
// eine leere Zeichenkette ergibt ein leeres Array
echo count(mb_str_split("")); // 0
// Ersatz für PHP vor Version 7.4
print_r(preg_split('//u', "Köln", -1, PREG_SPLIT_NO_EMPTY)); // Array ( [0] => K [1] => ö [2] => l [3] => n )
Worauf Sie achten sollten
- Die Funktion gibt es erst seit PHP 7.4. In älteren Versionen ersetzt sie preg_split() mit dem Modifikator u, wie im Beispiel.
- Eine Länge kleiner als 1 bedeutet in PHP 7.4 eine Warnung und false, seit PHP 8.0 eine ValueError-Ausnahme.
- Sie teilt nach Codepoints. Ein Buchstabe, der als Grundzeichen mit einem separaten kombinierenden Zeichen geschrieben ist, ergibt zwei Elemente.
- Zum Zerlegen nach einem Trennzeichen (Komma, Leerzeichen) verwenden Sie explode().
- Ein Array aller Zeichen eines langen Textes belegt viel Speicher. Genügt ein Zeichen an einer bestimmten Position, nehmen Sie mb_substr().
Verwandte Funktionen:
str_split()
mb_substr()
mb_strlen()