Comparez strlen et mb_strlen
Lorsque les caractères sont tous des caractères anglais, les deux sont identiques. Ici, nous comparons principalement les deux résultats de calcul lorsque le chinois et l'anglais sont mélangés. (La méthode d'encodage lors du test était UTF8)
<?php $str=‘中文a字1符‘; echo strlen($str); echo ‘<br />‘; echo mb_strlen($str,‘UTF8‘); //输出结果 //14 //6 ?>
Analyse des résultats : lors du calcul de strlen, un caractère chinois UTF8 est traité comme 3 longueurs, donc la longueur de "Chinois un caractère 1 caractère" est de 3* 4 2 =14
Lors du calcul de mb_strlen, si le code interne est sélectionné comme UTF8, un caractère chinois sera calculé comme une longueur de 1, donc la longueur du "Chinois un caractère 1 caractère" est de 6
À propos du chinois et chaînes mixtes anglaises Calcul de l'espace réservé :
En utilisant ces deux fonctions, vous pouvez calculer conjointement l'espace réservé d'une chaîne mixte chinoise et anglaise (l'espace réservé d'un caractère chinois est 2 et l'espace réservé d'un caractère anglais est 1). méthode de calcul Oui : si une chaîne mixte comporte un caractère chinois et un caractère anglais b, l'espace réservé est :
<?php $str=‘中文a字1符‘; //计算如下 echo (strlen($str) + mb_strlen($str,‘UTF8‘)) / 2; echo //输出结果 //10 ?>
Par exemple, la valeur strlen($str) de "Caractère chinois à 1 caractère" est 14 , la valeur de mb_strlen( $str) est 6, alors on peut calculer que l'espace réservé pour "Chinois un caractère 1 caractère" est 10.
Ci-joint un article sur le site :
C'est toujours une question sur le chinois . La fonction strlen de longueur de chaîne intégrée à PHP ne peut pas gérer correctement les chaînes chinoises. Elle obtient uniquement le nombre d'octets occupés par la chaîne. Pour l'encodage chinois GB2312, la valeur obtenue par strlen est le double du nombre de caractères chinois, tandis que pour le chinois encodé en UTF-8, la différence est de trois fois (sous l'encodage UTF-8, un caractère chinois occupe 3 octets).
L'utilisation de la fonction mb_strlen peut mieux résoudre ce problème. L'utilisation de mb_strlen est similaire à strlen, sauf qu'il possède un deuxième paramètre facultatif pour spécifier le codage des caractères. Par exemple, pour obtenir la longueur $str de la chaîne UTF-8, vous pouvez utiliser mb_strlen($str,'UTF-8'). Si le deuxième paramètre est omis, l'encodage interne de PHP sera utilisé. L'encodage interne peut être obtenu via la fonction mb_internal_encoding(). Il est à noter que mb_strlen n'est pas une fonction principale de PHP Avant de l'utiliser, vous devez vous assurer que php_mbstring.dll est chargé dans php.ini, c'est-à-dire vous assurer que la ligne "extension=php_mbstring.dll" existe. et n'est pas commenté, sinon ce sera un problème de fonction indéfini.
Pour plus d'articles liés au calcul de la longueur des chaînes mixtes chinoises et anglaises de php strlen mb_strlen, veuillez faire attention au site Web PHP chinois !