Dans PHP, str_split () est une fonction de segmentation de chaîne couramment utilisée, qui peut diviser une chaîne en plusieurs tableaux de petits caractères. Normalement, str_split () divise la chaîne dans l'ordre des caractères et renvoie un tableau disposé dans l'ordre. Cependant, dans certains cas spéciaux, lorsque Str_split () est utilisé, la commande de tableau renvoyée peut avoir des exceptions.
Tout d'abord, jetons un coup d'œil à un exemple de base, comment utiliser la fonction str_split () :
<?php
$string = "hello";
$array = str_split($string);
print_r($array);
?>
Ce code publie le tableau suivant:
Array
(
[0] => h
[1] => e
[2] => l
[3] => l
[4] => o
)
Comme vous pouvez le voir, la fonction str_split () divise la chaîne par caractère dans un tableau disposé dans l'ordre.
Cependant, vous pouvez parfois rencontrer un problème que l'ordre des tableaux renvoyés à l'aide de str_split () semble incorrect. Les causes de ce problème peuvent être diverses, et le suivant répertorie plusieurs scénarios et solutions possibles.
PHP utilise le codage UTF-8 par défaut. Si votre chaîne contient des caractères multilin (comme le chinois, le japonais, etc.), str_split () peut ne pas gérer correctement ces caractères. Pour les caractères multi-octets, str_split () divisera les caractères en octets au lieu de les diviser par des caractères réels.
Solution : pour les caractères multi-girés, vous pouvez utiliser la fonction MB_STR_SPLIT () (Besoin d'activer l'extension MBSTring ) qui divise correctement les caractères dans la chaîne au lieu des octets.
<?php
$string = "Bonjour";
$array = mb_str_split($string);
print_r($array);
?>
Le résultat renvoyé de cette manière sera:
Array
(
[0] => toi
[1] => bien
)
Parfois, la chaîne peut contenir des caractères invisibles, tels que des espaces, des pauses de ligne, etc., qui affecteront l'ordre et le contenu du tableau après avoir été divisé.
Solution : vous pouvez utiliser la fonction TRIM () pour supprimer les caractères d'espace blanc aux deux extrémités de la chaîne, ou utiliser str_replace () pour supprimer des caractères invisibles dans la chaîne.
<?php
$string = " hello ";
$string = trim($string); // Supprimer les caractères des espaces blancs aux deux extrémités
$array = str_split($string);
print_r($array);
?>
La fonction str_split () a une longueur de paramètre facultative, qui représente la longueur maximale de chaque élément de tableau. Si vous passez une longueur, PHP divise la chaîne par cette longueur. Si la valeur de longueur $ est définie de manière incorrecte, elle peut provoquer la division comme prévu.
SOLUTION : Vérifiez le paramètre $ longueur pour vous assurer qu'il est réglé correctement. Par exemple, si vous souhaitez que chaque élément de tableau contienne 2 caractères, vous pouvez écrire ceci:
<?php
$string = "abcdef";
$array = str_split($string, 2); // Chaque2Un ensemble de caractères
print_r($array);
?>
La sortie sera:
Array
(
[0] => ab
[1] => cd
[2] => ef
)
La fonction str_split () fonctionne comme prévu dans la plupart des cas, mais si vous rencontrez le mauvais ordre du tableau retourné, vous pouvez le déboguer à travers les méthodes suivantes:
Pour confirmer si le codage des chaînes est correct, en particulier pour les caractères multi -yte, vous pouvez utiliser MB_STR_SPLIT () .
Confirmez si la chaîne contient des caractères invisibles et utilisez TRIM () ou str_replace () pour le traitement.
Vérifiez si le paramètre de longueur de division $ est réglé correctement.
Avec la méthode ci-dessus, vous devriez être en mesure de résoudre le problème que la fonction str_split () renvoie un ordre incorrect.