(PHP 4, PHP 5, PHP 7, PHP 8)
strtok — Zerlegt einen String
Alternative Signatur (benannte Parameter werden nicht unterstützt):
strtok() zerlegt den String
string
in kürzere Strings (Token), wobei jeder Token
durch ein beliebiges Zeichen aus token
getrennt
wird. Das bedeutet, wenn Sie einen String wie "Dies ist ein
Beispiel-String" haben, können Sie ihn in seine einzelnen Worte zerlegen,
indem Sie das Leerzeichen als token
verwenden.
Beachten Sie, dass nur der erste Aufruf von strtok das
string
-Argument verwendet. Jeder Folgeaufruf von
strtok benötigt nur den zu beachtenden token
, um
herauszufinden, wo sich diese im aktuellen String befinden. Um neu zu
beginnen oder einen neuen String zu zerlegen, müssen Sie nur erneut strtok
mit dem string
-Parameter aufrufen, damit die
Funktion neu initialisiert wird. Beachten Sie, dass Sie mehrere Token im
token
-Parameter angeben können. Der String wird dann
an jeder Stelle zerlegt, an der eines der im
token
-Argument angegebenen Zeichen gefunden wird.
Hinweis:
Diese Funktion verhält sich etwas anders, als man es vielleicht erwartet, wenn man mit explode() vertraut ist. Zunächst wird eine Folge von zwei oder mehr zusammenhängenden
token
-Zeichen in der ausgewerteten Zeichenkette als ein einzelnes Trennzeichen betrachtet. Außerdem wird eintoken
, das sich am Anfang oder Ende der Zeichenkette befindet, ignoriert. Wenn zum Beispiel eine Zeichenkette";aaa;;bbb;"
verwendet wird, würden aufeinanderfolgende Aufrufe von strtok() mit";"
alstoken
die Zeichenketten "aaa" und "bbb" und dannfalse
zurückgeben. Als Ergebnis wird die Zeichenkette in nur zwei Elemente aufgeteilt, währendexplode(";", $string)
ein Array mit 5 Elementen zurückgeben würde.
string
Der String, der in kleinere Zeichenketten (Token) zerlegt werden soll.
token
Die Trennzeichen, die auf string
angewendet
werden sollen.
Version | Beschreibung |
---|---|
8.3.0 |
Wenn token nicht angegeben wurde, wird nun ein
Fehler der Stufe E_WARNING ausgegeben.
|
Beispiel #1 strtok()-Beispiel
<?php
$string = "Dies ist\tein Beispiel-\nString";
/* Sowohl das Tabulator- als auch das Newline-Zeichen werden
zusätzlich zum Leerzeichen als Token zum Zerlegen verwendet */
$tok = strtok($string, " \n\t");
while ($tok !== false) {
echo "Wort=$tok<br />";
$tok = strtok(" \n\t");
}
?>
Beispiel #2 Verhalten von strtok() beim Auffinden eines leeren Teils
<?php
$erster_token = strtok('/irgendetwas', '/');
$zweiter_token = strtok('/');
var_dump($erster_token, $zweiter_token);
?>
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
string(11) "irgendetwas" bool(false)
Beispiel #3 Der Unterschied zwischen strtok() und explode()
<?php
$string = ";aaa;;bbb;";
$parts = [];
$tok = strtok($string, ";");
while ($tok !== false) {
$parts[] = $tok;
$tok = strtok(";");
}
echo json_encode($parts),"\n";
$parts = explode(";", $string);
echo json_encode($parts),"\n";
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:
["aaa","bbb"] ["","aaa","","bbb",""]
Diese Funktion kann sowohl das
boolsche false
zurückliefern, als auch einen nicht-boolschen Wert, welcher zu false
ausgewertet wird.
Weitere Informationen entnehmen Sie bitte dem Abschnitt über die
boolschen Typen. Benutzen Sie deshalb
den === Operator,
um den Rückgabewert dieser Funktion zu überprüfen.