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!