Lorsque vous utilisez PHP pour traiter les chaînes, STR_SPLIT est une fonction couramment utilisée pour diviser une chaîne en une sous-chaîne d'une longueur spécifiée. Son utilisation commune est de diviser une chaîne en caractères ou sous-chaînes de longueur fixe. Cependant, lorsque vous traitez avec des caractères chinois, nous pouvons rencontrer des problèmes brouillés, car STR_SPLIT divise les chaînes par octets plutôt que par défaut par défaut. Les caractères chinois occupent généralement plusieurs octets, ce qui entraînera correctement correctement les caractères chinois de STR_SPLIT , entraînant un code brouillé.
La fonction STR_SPLIT divise la chaîne par longueur d'octets, et par défaut, la longueur de chaque sous-chaîne est 1. Si la chaîne entrante contient des caractères multi -yte (tels que les caractères chinois), STR_SPLIT traitera chaque octet comme un seul caractère. De cette façon, les caractères chinois seront divisés en plusieurs caractères individuels, entraînant un code brouillé.
Supposons que nous ayons une chaîne chinoise "Bonjour, php!" et le diviser à l'aide de la fonction STR_SPLIT :
<?php
$str = "Bonjour,PHP!";
$result = str_split($str);
print_r($result);
?>
La sortie peut être:
Array
(
[0] => toi
[1] => bien
[2] => ,
[3] => P
[4] => H
[5] => P
[6] => !
)
D'après les résultats de sortie, nous pouvons voir que les caractères chinois "vous" et "bons" sont respectivement divisés en caractères distincts plutôt que dans un tout. Cela conduira à un code brouillé.
Pour éviter cela, nous pouvons utiliser la fonction MB_STR_SPLIT . MB_STR_SPLIT est une fonction de division de chaîne multi-uste qui gère correctement les caractères chinois et les divise dans son ensemble.
MB_STR_SPLIT est une fonction de chaîne multi -yte pour PHP (partie de l'extension MBSTring ). Il divise la chaîne par des caractères au lieu d'octets. Lorsque vous utilisez la fonction MB_STR_SPLIT , il n'y aura pas de problèmes brouillés.
<?php
$str = "Bonjour,PHP!";
$result = mb_str_split($str);
print_r($result);
?>
Le résultat de la sortie est:
Array
(
[0] => toi
[1] => bien
[2] => ,
[3] => P
[4] => H
[5] => P
[6] => !
)
Comme vous pouvez le voir, les caractères chinois "vous" et "bons" sont correctement divisés dans leur ensemble, plutôt que de se diviser en plusieurs octets.
Si vous utilisez une URL dans votre code (telles que les demandes d'API, etc.) et que l'URL contient des caractères chinois, vous devez également être prudent lorsque vous passez les caractères chinois dans l'URL vers STR_SPLIT . L'URL peut être codée à l'aide des fonctions URLencode ou Rawurlencode pour éviter les problèmes de code brouillé.
Par exemple:
<?php
$url = "https://m66.net/search?query=Caractères chinois";
$encoded_url = urlencode($url);
echo $encoded_url;
?>
Le résultat de la sortie est:
https%3A%2F%2Fm66.net%2Fsearch%3Fquery%3D%E4%B8%AD%E6%96%87%E5%AD%97%E7%AC%A6
De cette façon, les caractères chinois sont correctement codés dans un format reconnu par URL.
La fonction STR_SPLIT a un problème brouillé lorsqu'il s'agit de caractères chinois car il divise les cordes par des octets, et les caractères chinois prennent généralement plusieurs octets.
Pour éviter le code brouillé, vous pouvez utiliser la fonction MB_STR_SPLIT pour gérer les caractères multilingue pour vous assurer que les caractères chinois sont divisés dans son ensemble.
Si vous devez faire face aux URL contenant du chinois, vous devez utiliser les fonctions URLencode ou Rawurlencode pour coder l'URL pour éviter les problèmes de code brouillé.
Espérons que ces méthodes pourront vous aider à éviter le problème brouillé de STR_SPLIT lorsqu'ils traitent des caractères chinois et à assurer le traitement correct des chaînes.