Maison > Article > développement back-end > Fonction d'interception chinoise PHP 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 :
<?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!