Bei der Verwendung von PHPs Exploit () -Funktion können viele Entwickler auf Situationen stoßen, in denen die resultierende Array -Länge nicht den Erwartungen entspricht. Der Zweck der Funktion exploit () besteht darin, eine Zeichenfolge in mehrere Substrings aufzuteilen und ein Array zurückzugeben. Theoretisch sollte die Funktion exploit () die Zeichenfolge in mehrere Teile aufteilen, die von einem Trennzeichen begrenzt sind und ein Array der korrekten Länge zurückgeben. Manchmal ist die zurückgegebene Arraylänge jedoch möglicherweise nicht so, wie wir es erwartet hatten, und die Ursache dafür ist normalerweise auf einige Details zurückzuführen, die in diesem Artikel gemeinsame Ursachen analysiert.
Die grundlegende Syntax der Funktion exploit () lautet wie folgt:
array explode(string $delimiter, string $string[, int $limit = PHP_INT_MAX])
$ granditer : delimiter, verwendet, um Zeichenfolgen zu teilen.
$ String : Die String, die geteilt werden soll.
$ limit (optional): Begrenzt die zurückgegebene Arraylänge. Wenn $ Limit nicht festgelegt ist, werden alle geteilten Teile zurückgegeben.
$string = "apple,banana,orange";
$result = explode(",", $string);
print_r($result);
Die Ausgabe wird sein:
Array
(
[0] => apple
[1] => banana
[2] => orange
)
In praktischen Anwendungen können wir jedoch auf einige Situationen stoßen, die uns verwirrt, und die resultierende Arraylänge ist möglicherweise nicht wie erwartet aufgeteilt. Als nächstes werden wir mehrere gemeinsame Situationen analysieren.
Wenn $ delimiter eine leere Zeichenfolge ist oder $ delimiter in $ String nicht vorhanden ist, gibt die Funktion exploit () ein Array zurück, das die ursprüngliche Zeichenfolge enthält. Zum Beispiel:
$string = "apple,banana,orange";
$result = explode("", $string); // delimiter is an empty string
print_r($result);
In diesem Beispiel, da der Trennzeichen eine leere Zeichenfolge ist, enthält das zurückgegebene Array jedes Zeichen als Array -Element.
Wenn die String $ -Sching aufgeteilt wird oder weiße Zeichen (z. B. Leerzeichen, Zeilenumbrüche usw.) enthält, gibt exploit () ein Array mit Länge 1 zurück, und das einzige Element im Array ist die ursprüngliche Zeichenfolge. Dies liegt daran, dass es keinen gültigen Trennzeichen gibt, um die Zeichenfolge zu teilen.
$string = "";
$result = explode(",", $string);
print_r($result);
Das Ausgangsergebnis ist:
Array
(
[0] =>
)
In ähnlicher Weise wird exploit () ein Array mit leeren Zeichenfolgen von Whitespace -Zeichen zurückgibt, wenn die Zeichenfolge nur aus Whitespace -Zeichen wie "" besteht.
Der Grenzparameter ist ein sehr wichtiger Parameter in der Funktion exploit () . Wenn $ Limit festgelegt ist, wird die zurückgegebene Array -Länge dadurch begrenzt. Wenn beispielsweise $ Limit geringer ist als die Anzahl der zu trennen, enthält das letzte Element des Arrays alle verbleibenden Teile.
$string = "apple,banana,orange,grape";
$result = explode(",", $string, 3);
print_r($result);
Ausgangsergebnis:
Array
(
[0] => apple
[1] => banana
[2] => orange,grape
)
Wie oben gezeigt, enthält das zurückgegebene Array aufgrund von Grenzeinstellungen nur drei Elemente, und das letzte Element enthält alle verbleibenden Teile.
Wenn der Schwanz einer Zeichenfolge einen Separator enthält, verwendet exploit () auch die schwanz leere Zeichenfolge als Element des Arrays. Wenn die Zeichenfolge beispielsweise "Apple, Banane" ist und der Trennzeichen ist , wird Exploit () am Ende ein leeres Element hinzufügen.
$string = "apple,banana,";
$result = explode(",", $string);
print_r($result);
Das Ausgangsergebnis ist:
Array
(
[0] => apple
[1] => banana
[2] =>
)
Wenn Sie in diesem Fall das Ende des leeren Elements nicht erwarten, wird ein zusätzliches Element zur Länge des Arrays hinzugefügt.
Wenn in der Zeichenfolge mehrere aufeinanderfolgende Trennzeichen auftreten, behandelt Exploit () diese aufeinanderfolgenden Separatoren als mehrere Separatoren, und das Ergebnis ist, dass ein Array -Element einer leeren Zeichenfolge erzeugt wird.
Zum Beispiel:
$string = "apple,,banana,,orange";
$result = explode(",", $string);
print_r($result);
Das Ausgangsergebnis ist:
Array
(
[0] => apple
[1] =>
[2] => banana
[3] =>
[4] => orange
)
Mehrere aufeinanderfolgende Kommas führen hier mehrere leere Elemente im Array.
Verwandte Tags:
explode