Position actuelle: Accueil> Derniers articles> Strat_split et mb_convert_encoding

Strat_split et mb_convert_encoding

M66 2025-05-27

En PHP, nous pouvons rencontrer des problèmes de codage lors de la gestion des chaînes chinoises, en particulier lorsque vous utilisez certaines fonctions de traitement de chaîne. La fonction STR_SPLIT est une fonction couramment utilisée pour diviser les chaînes, mais elle peut produire des résultats inattendus lors du traitement des caractères multi-gobets (comme le chinois). Afin de gérer correctement les chaînes chinoises, nous pouvons utiliser STR_SPLIT et MB_CONVERT_ENCODING en combinaison pour assurer le codage correct des caractères et éviter les problèmes brouillés ou tronqués.

1. Str_split et caractères chinois

La fonction STR_SPLIT divise une chaîne dans un tableau, qui par défaut est divisée par la longueur des caractères, mais elle est basée sur un jeu de caractères à un octet et peut ne pas fonctionner comme prévu lors du traitement des caractères multi -yte (comme le chinois). Par exemple:

 $string = "Bonjour,monde!";
$result = str_split($string, 3);
print_r($result);

Sortir:

 Array
(
    [0] => toi
    [1] => bien,
    [2] => monde
    [3] => limite
    [4] => !
)

Comme vous pouvez le voir, STR_SPLIT ne divise pas le chinois par la longueur d'octets complète du personnage, mais est divisé une fois tous les 3 octets, ce qui entraîne des caractères chinois.

2. Utilisez MB_Convert_encoding pour résoudre le problème de codage

Afin de gérer correctement les caractères chinois, nous pouvons utiliser la fonction mb_convert_encoding pour convertir le format de codage de la chaîne avant de diviser la chaîne. Le but de cela est de s'assurer que le codage de la chaîne est uniforme, en particulier dans des environnements multi-langues, et d'éviter les problèmes brouillés.

Par exemple, si nous voulons convertir le codage de chaîne de GBK à UTF-8 , nous pouvons utiliser le code suivant:

 $string = "Bonjour,monde!";
$encodedString = mb_convert_encoding($string, 'UTF-8', 'GBK');

3. Combinant str_split et mb_convert_encoding

L'utilisation de ces deux fonctions en combinaison garantit que nous pouvons gérer correctement l'encodage des caractères lors de la division des cordes chinoises. Voici un exemple complet:

 $string = "Bonjour,monde!";
$encodedString = mb_convert_encoding($string, 'UTF-8', 'GBK'); // Convertir l'encodage
$result = str_split($encodedString, 3); // Séparé par caractère
print_r($result);

4. traiter les caractères chinois dans les URL

Dans le développement réel, nous devons souvent faire face aux caractères chinois dans les URL. Pour éviter les erreurs d'encodage, il est recommandé d'utiliser MB_CONVERT_ENCODING pour convertir la partie chinoise de l'URL en un format de codage approprié. Par exemple, nous pouvons convertir la partie chinoise de l'URL en codage UTF-8 pour nous assurer qu'il ne semble pas brouillé dans la demande.

Supposons que nous ayons une URL avec des caractères chinois:

 $url = "http://example.com/search?q=Bonjour";

Pour le gérer correctement, nous pouvons coder l'URL à l'aide d'URLencode , puis le convertir: