Die Funktion split() wurde in PHP 5.3 als veraltet markiert und in PHP 7.0 komplett entfernt. Dieses Tutorial zeigt die modernen Alternativen explode() und preg_split(), mit denen Sie einen String in ein Array umwandeln können.
1. explode() – String mit festem Trennzeichen aufteilen
Für einfache Trennzeichen (Komma, Semikolon, Leerzeichen etc.) ist explode() die richtige Wahl:
<?php
$namen = "Anna,Ben,Clara,David";
$array = explode(",", $namen);
print_r($array);
/* Ausgabe:
Array (
[0] => Anna
[1] => Ben
[2] => Clara
[3] => David
)
*/
?>
explode() mit Limit-Parameter
Der optionale dritte Parameter begrenzt die Anzahl der Array-Elemente:
<?php
$text = "Eins-Zwei-Drei-Vier-Fünf";
/* Maximal 3 Elemente: Rest bleibt im letzten Element */
$result = explode("-", $text, 3);
print_r($result);
/* Array (
[0] => Eins
[1] => Zwei
[2] => Drei-Vier-Fünf
) */
/* Negativer Limit: Letzte N Elemente weglassen */
$result = explode("-", $text, -2);
print_r($result);
/* Array (
[0] => Eins
[1] => Zwei
[2] => Drei
) */
?>
2. preg_split() – String mit Regex-Muster aufteilen
Wenn Sie mehrere verschiedene Trennzeichen oder ein Muster benötigen, verwenden Sie preg_split():
<?php
$string = "Ich-bin.Der_dieser+mit=einem";
/* Alles was kein Buchstabe ist als Trenner */
$arr = preg_split("/[^a-zA-ZäöüÄÖÜß]+/", $string);
print_r($arr);
/* Array (
[0] => Ich
[1] => bin
[2] => Der
[3] => dieser
[4] => mit
[5] => einem
) */
?>
Praktisches Beispiel: CSV-Zeile mit mehreren Trennzeichen
<?php
$csv = "Name,Alter;Stadt,Land;Beruf";
/* Komma und Semikolon als Trennzeichen */
$felder = preg_split("/[,;]/", $csv);
print_r($felder);
/* Array (
[0] => Name
[1] => Alter
[2] => Stadt
[3] => Land
[4] => Beruf
) */
?>
Leerzeilen und leere Elemente filtern
<?php
$text = "Wort1 Wort2 Wort3";
/* PREG_SPLIT_NO_EMPTY entfernt leere Elemente */
$woerter = preg_split("/s+/", $text, -1, PREG_SPLIT_NO_EMPTY);
print_r($woerter);
/* Array (
[0] => Wort1
[1] => Wort2
[2] => Wort3
) */
?>
3. str_split() – String in gleich lange Teile
Um einen String in Teile mit fester Länge aufzuteilen (ohne Trennzeichen), verwenden Sie str_split():
<?php
$code = "ABCDEFGHIJ";
$teile = str_split($code, 3);
print_r($teile);
/* Array (
[0] => ABC
[1] => DEF
[2] => GHI
[3] => J
) */
?>
Welche Funktion wann verwenden?
| Funktion | Anwendungsfall | Beispiel |
explode() | Festes Trennzeichen | CSV, kommagetrennte Listen |
preg_split() | Regex-Muster als Trenner | Mehrere Trennzeichen, Whitespace |
str_split() | Feste Zeichenlänge | Blockweise Verarbeitung |
mb_str_split() | Feste Länge (UTF-8) | Multibyte-Strings |
Migration von split() zu modernen Funktionen
Falls Sie alten Code mit split() pflegen, hier die Umstellung:
<?php
/* ALT (funktioniert nicht mehr seit PHP 7.0): */
/* $arr = split("[,;]", $string); */
/* NEU mit preg_split() (Regex-Delimiter hinzufügen): */
$arr = preg_split("/[,;]/", $string);
/* ALT: */
/* $arr = split(",", $string); */
/* NEU mit explode() (wenn kein Regex nötig): */
$arr = explode(",", $string);
?>
Faustregel: Verwenden Sie explode() wenn möglich – es ist schneller als preg_split(), da kein regulärer Ausdruck ausgewertet werden muss.