(PHP 4, PHP 5, PHP 7, PHP 8)
explode — Teilt eine Zeichenkette anhand einer Zeichenkette
 Gibt ein Array aus Zeichenketten zurück, die jeweils Teil von
 string sind. Die Abtrennung erfolgt dabei an der mit
 separator angegebenen Zeichenkette.
 
separatorDie Begrenzungszeichenkette.
stringDie Eingabezeichenkette.
limit
 Ist der Parameter limit angegeben und positiv,
 enthält das zurückgegebene Array maximal limit
 Elemente, wobei das letzte Element den Rest von
 string beinhaltet.
 
 Ist der Parameter limit negativ, werden alle
 Teilzeichenketten bis auf die letzten
 -limit-Teile zurückgegeben.
 
 Wenn der Parameter limit gleich 0 ist, wird er
 wie 1 behandelt.
 
Hinweis:
Vor PHP 8.0 akzeptierte implode() die Parameter in beliebiger Reihenfolge. explode() hat dies nie unterstützt. Stellen Sie daher sicher, dass Sie den Parameter
separatorvor dem Parameterstringnotieren.
 Gibt ein Array  von String s zurück, die
 durch Aufsplitten des Parameters string an
 Begrenzungen durch separator erzeugt werden.
 
 Ist separator eine leere Zeichenkette (""), so löst
 explode() einen ValueError  aus. Enthält
 separator einen Wert, der nicht in
 string vorkommt und wird ein negativer Wert für
 limit verwendet, wird ein leeres
 Array  zurückgegeben. Für alle anderen Werte von
 limit wird ein Array  zurückgegeben,
 das string als einziges Element enthält. Wenn
 separator am Anfang oder am Ende von
 string steht, wird ein leeres Array 
 an den Anfang bzw. das Ende des zurückgegebenen Array s
 angehängt.
 
| Version | Beschreibung | 
|---|---|
| 8.0.0 | explode() löst nun einen
 ValueError  aus, wenn an den Parameter separatoreine leere Zeichenkette
 ("") übergeben wird.
 Bisher gab explode() stattdessenfalse zurück. | 
Beispiel #1 explode()-Beispiele
<?php
// Beispiel 1
$pizza = "Teil1 Teil2 Teil3 Teil4 Teil5 Teil6";
$teile = explode(" ", $pizza);
echo $teile[0], PHP_EOL; // Teil1
echo $teile[1], PHP_EOL; // Teil2
// Beispiel 2
$data = "foo:*:1023:1000::/home/foo:/bin/sh";
list($user, $pass, $uid, $gid, $gecos, $home, $shell) = explode(":", $data);
echo $user, PHP_EOL; // foo
echo $pass, PHP_EOL; // *
?>
Beispiel #2 explode()-Rückgabebeispiele
<?php
/*
 Eine Zeichenkette, die nicht das Trennzeichen enthält, wird einfach
 ein ein-elementiges Array mit der ursprünglichen Zeichenkette liefern.
*/
$input1 = "hallo";
$input2 = "hallo,da";
$input3 = ',';
var_dump( explode( ',', $input1 ) );
var_dump( explode( ',', $input2 ) );
var_dump( explode( ',', $input3 ) );
?>Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
array(1) ( [0] => string(5) "hallo" ) array(2) ( [0] => string(5) "hallo" [1] => string(5) "da" ) array(2) ( [0] => string(0) "" [1] => string(0) "" )
Beispiel #3 limit-Parameterbeispiele
<?php
$str = 'eins|zwei|drei|vier';
// positiver Wert in "limit"
print_r(explode('|', $str, 2));
// negative Wert in "limit"
print_r(explode('|', $str, -1));
?>Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
Array ( [0] => eins [1] => zwei|drei|vier ) Array ( [0] => eins [1] => zwei [2] => drei )
Hinweis: Diese Funktion ist binärsicher.
Note that an empty input string will still result in one element in the output array. This is something to remember when you are processing unknown input.
For example, maybe you are splitting part of a URI by forward slashes (like "articles/42/show" => ["articles", "42", "show"]). And maybe you expect that an empty URI will result in an empty array ("" => []). Instead, it will contain one element, with an empty string:
<?php
$uri = '';
$parts = explode('/', $uri);
var_dump($parts);
?>
Will output:
array(1) {
 [0]=>
 string(0) ""
}
And not:
array(0) {
}If your data is smaller than the expected count with the list expansion:
<?php
$data = "foo:*:1023:1000::/home/foo:/bin/sh";
list($user, $pass, $uid, $gid, $gecos, $home, $shell,$nu) = explode(":", $data);
?>
The result is a warning not an error:
PHP Warning: Undefined array key 7 in ...
The solution is to pad the array to the expected length:
<?php
$data = "foo:*:1023:1000::/home/foo:/bin/sh";
list($user, $pass, $uid, $gid, $gecos, $home, $shell,$nu) = array_pad( explode(":", $data), 8, ""); 
// where 8 is the count of the list arguments
?>Be careful, while most non-alphanumeric data types as input strings return an array with an empty string when used with a valid separator, true returns an array with the string "1"!
var_dump(explode(',', null)); //array(1) { [0]=> string(0) "" }
var_dump(explode(',', false)); //array(1) { [0]=> string(0) "" }
var_dump(explode(',', true)); //array(1) { [0]=> string(1) "1" }If you want to directly take a specific value without having to store it in another variable, you can implement the following:
$status = 'Missing-1';
 
echo $status_only = explode('-', $status)[0];
// Missing