explode()
Die Funktion explode() teilt einen string in ein array von Teilstrings auf. Die Syntax der Funktion explode() lautet wie folgt:
Die Funktion explode() zerlegt einen string in ein array von Teilstrings und trennt ihn überall dort, wo ein gewähltes Trennzeichen (Delimiter) vorkommt. Sie ist der Standard-PHP-Weg, um durch Trennzeichen strukturierten Text — eine CSV-Zeile, ein Datum, eine kommagetrennte Tag-Liste — in Daten umzuwandeln, über die man iterieren kann. Sie ist das Gegenstück zu implode(), das ein array wieder zu einem string zusammenfügt.
Diese Seite behandelt die Syntax, den optionalen Parameter $limit (einschließlich negativer Werte), den Rückgabewert, häufige Parsing-Muster und typische Fehlerquellen.
Syntax
explode(string $separator, string $string, int $limit = PHP_INT_MAX): array| Parameter | Erforderlich | Beschreibung |
|---|---|---|
$separator | ja | Der Trennstring, an dem aufgeteilt wird. Er wird wörtlich abgeglichen, nicht als regulärer Ausdruck. |
$string | ja | Der Eingabe-string, der aufgeteilt werden soll. |
$limit | nein | Steuert, wie viele Teile zurückgegeben werden (siehe unten). Standardwert ist PHP_INT_MAX. |
Die Funktion gibt ein array von strings zurück. Wenn $separator ein leerer string ist (""), wirft explode() einen ValueError (in PHP 8+; in älteren Versionen wurde false zurückgegeben). Wenn das Trennzeichen im string nicht vorkommt, ist das Ergebnis ein array mit einem Element, das den gesamten ursprünglichen string enthält.
Einfaches Beispiel
Wir definieren das Trennzeichen ,, rufen explode() auf und geben das resultierende array mit print_r() aus. Jedes Element enthält alles zwischen zwei Trennzeichen.
Die Ausgabe dieses Codes lautet:
Array
(
[0] => Hello
[1] => World!
)Die Anzahl der Teile begrenzen
Der optionale Parameter $limit verändert, wie der string aufgeteilt wird:
- Positives Limit — das array enthält höchstens so viele Elemente; das letzte Element enthält den nicht weiter geteilten Rest des Strings.
- Null — wird als
1behandelt, sodass der gesamte string als einzelnes Element zurückgegeben wird. - Negatives Limit — alle Teile werden zurückgegeben außer den letzten
|limit|Teilen.
Positives Limit
Mit einem Limit von 3 wird der string in höchstens drei Elemente aufgeteilt. Das letzte Element enthält den Rest des Strings ungeteilt — three,four,five — anstatt verworfen zu werden.
Die Ausgabe dieses Codes lautet:
Array
(
[0] => one
[1] => two
[2] => three,four,five
)Dies ist praktisch, wenn nur die ersten paar Felder benötigt werden, zum Beispiel explode(' ', $logLine, 2), um einen Zeitstempel vom Rest einer Log-Meldung zu trennen.
Negatives Limit
Ein negatives Limit entfernt Elemente vom Ende des Ergebnisses:
<?php
$string = "one,two,three,four,five";
print_r(explode(",", $string, -2));
?>Die letzten zwei Teile (four und five) werden entfernt:
Array
(
[0] => one
[1] => two
[2] => three
)Häufige Parsing-Muster
Ein typischer Praxisfall ist das Lesen eines durch Trennzeichen strukturierten Datensatzes und das Bereinigen jedes Feldes per trim:
<?php
$csvRow = "Jane , Doe , [email protected] ";
$fields = array_map('trim', explode(",", $csvRow));
print_r($fields);
?>Die Ausgabe enthält saubere, leerzeichenfreie Werte:
Array
(
[0] => Jane
[1] => Doe
[2] => [email protected]
)explode() lässt sich auch gut mit der list()-Destrukturierung kombinieren, um benannte Teile aus einem string zu extrahieren:
<?php
$date = "2026-06-21";
[$year, $month, $day] = explode("-", $date);
echo "Year: $year, Month: $month, Day: $day";
?>Ausgabe:
Year: 2026, Month: 06, Day: 21Fallstricke
- Das Trennzeichen ist wörtlich, kein regulärer Ausdruck.
explode("-", ...)teilt an einem Bindestrich, niemals an einem Muster. Wenn ein regulärer Ausdruck benötigt wird (zum Beispiel zum Aufteilen an beliebigen Leerzeichen), sollte stattdessenpreg_split()verwendet werden. - Mit
explode()kann man nicht in einzelne Zeichen aufteilen. Ein leeres Trennzeichen löst einenValueErroraus. Um einen string in einzelne Zeichen aufzuteilen, solltestr_split()verwendet werden. - Mehrere aufeinanderfolgende Trennzeichen erzeugen leere Elemente.
explode(",", "a,,b")gibt["a", "", "b"]zurück. Mitarray_filter()lassen sie sich herausfiltern, wenn sie nicht benötigt werden. - Kein Trennzeichen gefunden? Es wird trotzdem ein gültiges array zurückgegeben — ein array mit einem Element, das den gesamten string enthält — sodass der Zugriff auf
[0]immer sicher ist.
Verwandte Funktionen
implode()/join()— das Gegenteil: ein array zu einem string zusammenfügen.str_split()— einen string in Teile fester Länge (oder Zeichen) aufteilen.preg_split()— mit einem regulären Ausdruck aufteilen.substr()— einen Teil eines Strings anhand der Position extrahieren.trim()— Leerzeichen von jedem Teil nach dem Aufteilen entfernen.