Signatur
Beschreibung
mb_split() funktioniert ähnlich wie preg_split(), ist jedoch auf Multibyte-Zeichenkodierungen (z. B. UTF-8, EUC-JP) ausgelegt. Der reguläre Ausdruck wird als Trennmuster verwendet, und der Eingabe-String wird an jeder Fundstelle dieses Musters aufgespalten.
Die Funktion berücksichtigt die aktuell aktive interne Kodierung, die mit mb_internal_encoding() gesetzt wurde. Dadurch werden Multibyte-Zeichen korrekt als einzelne Zeichen behandelt, was bei der Verwendung von split() oder preg_split() ohne entsprechende Unicode-Flags nicht garantiert ist.
Mit dem optionalen Parameter $limit lässt sich die maximale Anzahl der zurückgegebenen Teilstrings steuern. Wenn $limit positiv ist, wird der String in höchstens $limit Teile aufgespalten, wobei der letzte Teil den Rest des Strings enthält. Der Wert -1 bedeutet keine Begrenzung.
Typische Einsatzgebiete sind das Aufteilen japanischer, chinesischer oder anderer CJK-Texte sowie UTF-8-kodierter Strings anhand von Whitespace, Satzzeichen oder anderen Multibyte-Trennzeichen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $pattern Pflicht | string | Regulärer Ausdruck als Trennmuster. Verwendet die POSIX-Syntax erweitert durch Multibyte-Unterstützung. Es wird kein Trennzeichen (Delimiter) wie bei PCRE-Funktionen verwendet. | |
| $string Pflicht | string | Der zu zerlegende Multibyte-String. Die Kodierung wird über mb_internal_encoding() bestimmt. |
|
| $limit | int | -1 | Maximale Anzahl der zurückgegebenen Teilstrings. Bei -1 gibt es keine Begrenzung. Bei einem positiven Wert n werden höchstens n Elemente zurückgegeben, wobei das letzte Element den verbleibenden Rest des Strings enthält. |
Rückgabewert
$string aufgespalten wurde. Im Fehlerfall (z. B. ungültiger regulärer Ausdruck) wird false zurückgegeben.Beispiele
UTF-8-String anhand von Leerzeichen aufteilen
<?php
mb_internal_encoding('UTF-8');
$text = 'Héllo wörld föö';
$parts = mb_split('\s+', $text);
print_r($parts);
Japanischen Text an Satzzeichen aufteilen
<?php
mb_internal_encoding('UTF-8');
$text = '日本語。テスト。文字列';
$parts = mb_split('。', $text);
print_r($parts);
Limit der zurückgegebenen Teile begrenzen
<?php
mb_internal_encoding('UTF-8');
$text = 'eins,zwei,drei,vier,fünf';
$parts = mb_split(',', $text, 3);
print_r($parts);
// Wichtig · Fallstricke
Wichtig: Im Gegensatz zu PCRE-Funktionen wie preg_split() verwendet mb_split() keinen Delimiter um den regulären Ausdruck. Der Ausdruck wird direkt als String übergeben, also z. B. '\s+' statt '/\s+/'.
Die Funktion ist abhängig von der aktuellen internen Kodierung. Wird mb_internal_encoding() nicht explizit gesetzt, sollte man sicherstellen, dass die Standard-Kodierung korrekt konfiguriert ist (z. B. in der php.ini über mbstring.internal_encoding).
Für komplexere Muster mit Unicode-Properties (z. B. \p{L}) sollte stattdessen preg_split() mit dem u-Modifier (/muster/u) verwendet werden, da mb_split() keine PCRE-Unicode-Properties unterstützt.