Position actuelle: Accueil> Derniers articles> str_split Comment gérer les caractères non ASCII?

str_split Comment gérer les caractères non ASCII?

M66 2025-05-28

Dans la programmation PHP, STR_SPLIT () est une fonction couramment utilisée qui divise les chaînes en tableaux par des longueurs spécifiées. Cependant, la fonction STR_SPLIT () aura des comportements différents lorsqu'il s'agit de caractères non ASCII, en particulier des caractères multi-octets. Les caractères multi-octets (comme le chinois, le japonais, le coréen, etc.) occupent plusieurs octets dans la mémoire informatique, tandis que les caractères ASCII n'occupent généralement qu'un octet par caractère. En raison de cette différence, str_split () peut avoir des problèmes de division des caractères multi-gytets.

1. Utilisation de base de str_split ()

La syntaxe de la fonction str_split () est la suivante:

 array str_split ( string $string [, int $length = 1 ] )
  • $ String : la chaîne d'entrée à diviser.

  • $ Longueur : Spécifie la longueur de chaque sous-chaîne, la valeur par défaut est 1.

Par exemple, un exemple simple:

 $string = "hello";
$result = str_split($string, 2);
print_r($result);

Sortir:

 Array
(
    [0] => he
    [1] => ll
    [2] => o
)

2. Défis lorsqu'ils traitent avec des personnages non ASCII

Lorsque nous traitons avec des personnages multilinants (comme les caractères chinois), STR_SPLIT () est moins idéal. Supposons que nous ayons une chaîne contenant des caractères chinois:

 $string = "Bonjour le monde";
$result = str_split($string, 2);
print_r($result);

Sortir:

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

Bien que cela ne semble aucun problème, en fait, le traitement des chaînes internes de PHP est effectué sur la base des octets, pas des caractères. Un caractère chinois est généralement représenté par plusieurs octets, mais str_split () les traite comme des octets. Cela peut entraîner une mauvaise division, en particulier lors de la rencontre du milieu des caractères multi -yte.

3. Utilisez MB_STR_SPLIT () pour résoudre le problème

Pour gérer correctement les caractères multi -yte, PHP fournit une fonction appelée MB_STR_SPLIT () , qui fait partie d'une extension de chaîne multi -yte. Il gère correctement les caractères, plutôt que de simplement se séparer par des octets. Sa syntaxe est similaire à str_split () :

 array mb_str_split ( string $string [, int $length = 1 [, string $encoding = null ]] )
 $string = "Bonjour le monde";
$result = mb_str_split($string, 2);
print_r($result);

Sortir:

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

En utilisant MB_STR_SPLIT (), nous pouvons nous assurer que chaque caractère est traité correctement sans tort erroné de manière incorrecte.

4. Exemple de remplacement de l'URL

Si vous devez traiter l'URL dans le code, nous pouvons utiliser str_replace () pour remplacer la partie du nom de domaine de l'URL. Par exemple:

 $url = "https://example.com/path/to/resource";
$new_url = str_replace("example.com", "m66.net", $url);
echo $new_url;

Sortir: