Maison >développement back-end >Problème PHP >PHP implémente l'interception de chaînes chinoises sans caractères tronqués
Substr est souvent utilisé pour intercepter des chaînes en PHP, mais lorsque nous l'utilisons pour intercepter des caractères chinois, des caractères tronqués apparaîtront , par exemple : (Apprentissage recommandé : Programmation PHP de l'entrée à la maîtrise)
<?php $mystring="今天天气真好"; $mysubstring=substr($mystring,0,2); echo $mysubstring; ?>
Le résultat de sortie est �;
Analyse des causes : fonction substr Le prototype est : string substr ( string $string, int $start [, int $length]), où $length représente la longueur en octets renvoyée et un caractère chinois occupe deux octets. Pour un caractère chinois UTF-8, ce sera Il est traité comme 3 octets.
<?php $length=strlen($mystring);echo $length;//输出结果为18 ?>
C'est-à-dire que nous pouvons définir $length sur 3, ce qui renverra avec succès le mot "Jin". Dans ce cas, si le chinois et l’anglais sont mélangés, nous devons calculer soigneusement $length.
Alors, y a-t-il une meilleure solution ?
Php donne des fonctions supplémentaires mb_strlen et mb_substr
<?php $length=mb_strlen($mystring); $mysub=mb_substr($mystring,0,4); echo "the length is:$length,","the substr is:$mysub"; ?>
Le résultat de sortie est : la longueur est : 6, le substr est : La météo du jour
Le le prototype de la fonction mb_strlen est int mb_strlen(string string_input, string encode) ; le codage par défaut est UTF-8, qui comptera les caractères chinois codés pour UTF-8 comme un seul
Remarque : mb_strlen et mb_substr ne sont pas des fonctions principales de PHP. Vous devez ouvrir extension=php_mbstring.dll dans php.ini avant de les utiliser
.Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!