(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";
$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.