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 :
<?php $mystring="今天天气真好"; $mysubstring=substr($mystring,0,2); echo $mysubstring; ?>
Le résultat de sortie est �; (Apprentissage recommandé : Programmation PHP de l'entrée à la maîtrise)
Analyse des causes : Le prototype de la fonction substr 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, il sera traité comme 3 octets.
<?php $length=strlen($mystring);echo $length;//输出结果为18 ?>
C'est-à-dire que nous pouvons utiliser $length pour avoir la valeur 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 fournit 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
Fonction mb_strlen Le prototype is int mb_strlen(string string_input, string encode); par défaut, UTF-8, qui comptera les caractères chinois codés pour UTF-8 comme
Remarque : mb_strlen et mb_substr ne sont pas des fonctions essentielles 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!