Explode wird verwendet, um eine Zeichenkette einfach durch ein Trennzeichen zu trennen.
Unterstützung | PHP 4 und höher |
---|---|
Kurzbeschreibung | Aufteilung einer Zeichenkette in ein Array durch Trennzeichen. |
Anforderungen | Keine |
Hinweis | Kann kein Array einfügen, nur eine Zeichenkette. |
Oft müssen wir eine Zeichenkette nach einer einfachen Regel aufteilen. Zum Beispiel eine durch Komma getrennte Liste von Zahlen.
Die Funktion explode() eignet sich hierfür hervorragend, da sie das Trennzeichen (das die Zeichenkette trennt) als ersten Parameter und die Daten selbst als zweiten Parameter annimmt:
$cisla = '3, 1, 4, 1, 5, 9';$parser = explode(',', $cisla);foreach ($parser as $cislo) {echo $cislo . '<br>';// Hier können wir die Zahlen weiter verarbeiten}
Was aber, wenn die Zahlen durch Kommas getrennt sind, aber Leerzeichen um sie herum stehen?
Die Lösung besteht darin, die kleinste gemeinsame Teilzeichenkette zu analysieren und dann unerwünschte Zeichen um sie herum zu entfernen (Leerzeichen und andere Leerzeichen):
$cisla = '3, 1,4, 1 , 5 ,9';$parser = explode(',', $cisla);foreach ($parser as $cislo) {echo trim($cislo) . '<br>';// Hier können wir die Zahlen weiter verarbeiten}
In diesem Fall entfernt die Funktion trim()
auf elegante Weise die Leerzeichen um die Zeichen herum (Leerzeichen, Tabulatoren, Zeilenumbrüche, ...) und liefert nur saubere Daten.
TIPP: Für viele Beispiele ist explode() nicht geeignet und es ist viel besser, reguläre Ausdrücke zu verwenden.
Häufig sollen die Daten jedoch nur bis zu einer bestimmten Entfernung analysiert werden, wofür der dritte (optionale) Parameter limit verwendet werden kann.
Nehmen wir an, wir haben durch Doppelpunkte getrennte strukturierte Daten, bei denen wir den Inhalt nach dem ersten Doppelpunkt abrufen und die anderen Doppelpunkte ignorieren wollen. Beispiel:
$cas = 'Format: "j.n.Y - H:i"';
Wenn wir die Zeichenkette nur analysieren würden als:
$parser = explode(':', $cas);
Wir würden diese 3 Teilzeichenfolgen erhalten (in anderen Fällen könnten es viel mehr sein):
'Format''"j.n.Y - H''i"'
Daher setzen wir eine Grenze für die Anzahl der zu erhaltenden Elemente (und möglicherweise werden alle anderen Elemente an das Ende des letzten Elements angehängt):
$parser = explode(':', $cas, 2);// zurückkommen:echo $parser[0]; // Formatecho $parser[1]; // "j.n.Y - H:i"
Hinweis: Unerwünschte Anführungszeichen können aus der Zeichenkette entfernt werden, zum Beispiel mit der Funktion "trim()":
echo trim($parser[1], '"'); // der zweite Parameter gibt die zu entfernende Zeichenkarte an
Oft müssen wir eine Zeichenkette abrufen, die von zwei anderen Zeichenketten begrenzt wird. In PHP gibt es dafür keine direkte Funktion, aber wir können sie selbst schreiben:
function between(string $left, string $right, string $data): string{$l = explode($left, $data);$r = explode($right, $l[1]);return $r[0];}
Eine viel elegantere Aufteilung und Arbeit mit Strings kann mit regulären Ausdrücken erreicht werden, die ich auf einer separaten Seite bespreche.
$ip = '10.0.0.138';$parser = explode('.', $ip);echo $parser[0]; // druckt "10"echo $parser[1]; // druckt "0";
Die Variable "$ip" enthält eine Eingabezeichenkette, die nach dem Trennzeichen "." geparst wird, die Rückgabe ist ein Array. Das Parsen erfolgt bis zum Ende der Zeichenkette, sofern keine Begrenzung angegeben ist.
# | Typ | Beschreibung |
---|---|---|
1 | string | Trennzeichenfolge. |
2 | Zeichenkette | Geprüfte Zeichenkette. |
3 | int | Parsing-Grenze. Dies ist ein optionaler Parameter. Beispiel: |
$text = 'PHP ist meine Lieblingssprache!';$parser = explode('', $text, 1);echo $parser[0]; // druckt das erste Wortecho $parser[1]; // druckt den Rest des Textesecho $parser[2]; // gibt nichts aus, da ein Limit gesetzt wurde!
Der Rückgabewert ist ein Array mit einer geparsten Zeichenkette.
Die Indizes sind von Null bis "X" nummeriert, sofern keine Begrenzung angegeben ist.
PHP-Version | Beschreibung |
---|---|
5.1.0 | Unterstützung für negative Grenzwerte für Durchgänge hinzugefügt. |
4.0.1 | Optionaler Parameter limit hinzugefügt. |
Bei Verwendung eines negativen Limits wird die Anzahl der Elemente ab dem Ende der Zeichenkette angegeben.
Beispiel:
$str = 'eins|zwei|drei|vier';// positive Grenzeprint_r(explode('|', $str, 2));// negative Grenze (seit PHP 5.1)print_r(explode('|', $str, -1));
Die folgenden Felder werden zurückgegeben:
Array([0] => one[1] => two|three|four)Array([0] => one[1] => two[2] => three)
Jan Barášek Více o autorovi
Autor článku pracuje jako seniorní vývojář a software architekt v Praze. Navrhuje a spravuje velké webové aplikace, které znáte a používáte. Od roku 2009 nabral bohaté zkušenosti, které tímto webem předává dál.
Rád vám pomůžu:
Články píše Jan Barášek © 2009-2024 | Kontakt | Mapa webu
Status | Aktualizováno: ... | de