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()