In PHP ist Str_split () eine häufig verwendete String -Segmentierungsfunktion, die eine Zeichenfolge in mehrere kleine Zeichenarrays aufteilen kann. Normalerweise spaltet Str_split () die Zeichenfolge in Zeichenreihenfolge und gibt ein Array zurück, das in der Reihenfolge angeordnet ist. In einigen besonderen Fällen kann jedoch die zurückgegebene Array -Reihenfolge ausgenommen werden, wenn Str_split () verwendet wird.
Schauen wir uns zunächst ein grundlegendes Beispiel an, wie Sie die Funktion str_split () verwenden:
<?php
$string = "hello";
$array = str_split($string);
print_r($array);
?>
Dieser Code gibt das folgende Array aus:
Array
(
[0] => h
[1] => e
[2] => l
[3] => l
[4] => o
)
Wie Sie sehen können, teilt die Funktion str_split () die Zeichenfolge durch Zeichen in ein Array auf, das in der Reihenfolge angeordnet ist.
Manchmal können Sie jedoch auf ein Problem stoßen, dass die Reihenfolge der Arrays mit Str_split () falsch zu sein scheint. Die Ursachen dieses Problems können vielfältig sein, und die folgenden Auflagen sind mehrere mögliche Szenarien und Lösungen.
PHP verwendet standardmäßig die UTF-8-Codierung. Wenn Ihre Zeichenfolge Multibyte -Zeichen (z. B. Chinesisch, Japanisch usw.) enthält, kann Str_split () diese Zeichen möglicherweise nicht korrekt behandeln. Für Multi-Byte-Zeichen teilt Str_split () die Zeichen in Bytes, anstatt sie durch tatsächliche Zeichen zu teilen.
Lösung : Für Multibyte -Zeichen können Sie die Funktion mb_str_split () verwenden (müssen die Mbstring -Erweiterung aktivieren), die Zeichen korrekt in die Zeichenfolge anstelle von Bytes aufteilt.
<?php
$string = "Hallo";
$array = mb_str_split($string);
print_r($array);
?>
Das auf diese Weise zurückgegebene Ergebnis wird:
Array
(
[0] => Du
[1] => Gut
)
Manchmal kann die Zeichenfolge unsichtbare Zeichen wie Leerzeichen, Linienbrüche usw. enthalten, die die Reihenfolge und den Inhalt des Arrays nach der Aufteilung beeinflussen.
Lösung : Sie können die Funktion TRIM () verwenden, um Whitespace -Zeichen an beiden Enden der Zeichenfolge zu entfernen oder mit str_replace () unsichtbare Zeichen in der Zeichenfolge zu löschen.
<?php
$string = " hello ";
$string = trim($string); // Entfernen Sie die Whitespace -Zeichen an beiden Enden
$array = str_split($string);
print_r($array);
?>
Die Funktion str_split () hat einen optionalen Parameter $ Länge , der die maximale Länge jedes Array -Elements darstellt. Wenn Sie eine Länge übergeben, teilt PHP die Saite durch diese Länge auf. Wenn der Wert von $ Länge nicht ordnungsgemäß festgelegt wird, kann dies die Aufteilung wie erwartet verursachen.
Lösung : Überprüfen Sie den Parameter $ Länge , um sicherzustellen, dass er korrekt eingestellt ist. Wenn beispielsweise jedes Array -Element 2 Zeichen enthält, können Sie Folgendes schreiben:
<?php
$string = "abcdef";
$array = str_split($string, 2); // Jeder2Eine Reihe von Zeichen
print_r($array);
?>
Die Ausgabe wird sein:
Array
(
[0] => ab
[1] => cd
[2] => ef
)
Die Funktion von str_split () funktioniert in den meisten Fällen wie erwartet. Wenn Sie jedoch auf die falsche Reihenfolge des zurückgegebenen Arrays stoßen, können Sie sie durch die folgenden Methoden debuggen:
Um zu bestätigen, ob die String -Codierung korrekt ist, insbesondere für Multibyte -Zeichen, können Sie mb_str_split () verwenden.
Bestätigen Sie, ob die Zeichenfolge unsichtbare Zeichen enthält, und verwenden Sie TRIM () oder str_replace () zur Verarbeitung.
Überprüfen Sie, ob der Parameter der Split -Länge $ korrekt eingestellt ist.
Mit der obigen Methode sollten Sie in der Lage sein, das Problem zu lösen, dass die Funktion str_split () eine falsche Reihenfolge zurückgibt.