Maison >développement back-end >Problème PHP >Chaîne PHP apprenant à renvoyer la longueur des caractères chinois ou des caractères mixtes
Dans l'article précédent "Comment remplacer une sous-chaîne d'une certaine longueur par un signe * en PHP", nous avons introduit le remplacement de chaîne, une méthode pour remplacer une sous-chaîne d'une certaine longueur par un signe *. Cette fois, nous continuons. comprendre les chaînes , présenter la méthode de calcul de la longueur des chaînes chinoises ou la longueur des chaînes mixtes chinoises et anglaises.
Comment calculer la longueur d'une chaîne chinoise ? Concernant ce problème, notre première réaction pourrait être d'utiliser la fonction strlen(), mais la fonction strlen() est efficace pour traiter les chaînes entièrement anglaises, mais elle ne fonctionne pas lorsqu'il s'agit de chaînes mixtes chinoises et anglaises ou de chaînes chinoises pures. . Jetons un coup d'œil à l'exemple suivant :
<?php header("Content-type:text/html;charset=utf-8"); //设置字符编码为utf-8 $str = "欢迎来到PHP中文网!"; echo '字符串 “'.$str.'” 的长度为:'.strlen($str).'<br>'; ?>
Le résultat de sortie est :
On peut voir que la fonction strlen() ne peut pas renvoyer avec précision la longueur des chaînes mixtes de chinois et d'anglais ou de chinois pur en raison de règles différentes pour le traitement des caractères. Alors pourquoi renvoie-t-il 27 ?
C'est parce que le codage de caractères que nous utilisons est utf-8. Sous le codage UTF-8, un caractère chinois occupe trois octets.
Fonction strlen() En code ASCII, un caractère chinois occupe deux octets d'espace ; en codage UTF-8, un caractère chinois (y compris le chinois traditionnel) équivaut à trois octets en codage Unicode, un caractère chinois ( (y compris chinois traditionnel) est égal à deux octets.
La chaîne "Bienvenue sur le site Web PHP chinois !
" dans l'exemple ci-dessus contient 8 caractères chinois et 3 caractères anglais, puis 8*3+3= 27
octets, la longueur de la chaîne est de 27. 欢迎来到PHP中文网!
”中一个包含了8个中文字符,3个英文字符,则8*3+3=27
个字节,则字符串长度为27。
但这样的字符串长度不是我们想要的,那样如何处理中文字符,可以准确的计算出我们想要的中英文混合或纯中文字符串的长度呢?
PHP提供了一个函数来解决这个问题,那就是mb_strlen() 函数。
还是上个示例,这次使用mb_strlen() 函数来计算字符串长度:
<?php header("Content-type:text/html;charset=utf-8"); $str = "欢迎来到PHP中文网!"; echo '字符串 “'.$str.'” 的长度为:'.mb_strlen($str,'utf-8').'<br>'; ?>
输出结果为:
可以看出:字符串$str
中,中文+英文+感叹号,一个有11个字符,输出结果也为11。对了,找到对的人了~
mb_strlen() 函数中无论是汉字,还是英文、数字、小数点、下划线和空格,都只占一个字节。
下面我们来简单了解一下mb_strlen() 函数。
mb_strlen($string,$encoding)
函数可以通过设置字符编码从而返回对应的字符数;该函数接受一个必需参数$string(需要检测的字符串)和一个可省略的参数$encoding
(字符编码),如果省略则使用内部字符编码。
我们可以通过设置对应的$encoding
PHP fournit une fonction pour résoudre ce problème, qui est la fonction mb_strlen().
Identique à l'exemple précédent, cette fois en utilisant la fonction mb_strlen() pour calculer la longueur de la chaîne :rrreeeLe résultat de sortie est :
$str
, chinois + Anglais + Point d'exclamation, l'un a 11 caractères et le résultat de sortie est également 11. Au fait, j'ai trouvé la bonne personne~mb_strlen($string,$encoding)
peut renvoyer le nombre de caractères correspondant en définissant l'encodage des caractères ; cette fonction accepte un paramètre obligatoire $string (la chaîne qui doit être détectée) et un Paramètre $encoding
omis (encodage des caractères), en cas d'omission, l'encodage de caractères interne est utilisé. 🎜🎜Nous pouvons bien gérer le problème de longueur des chaînes chinoises en définissant les paramètres $encoding
correspondants. 🎜🎜D'accord, c'est tout. Si vous voulez savoir autre chose, vous pouvez cliquer ici. → →🎜Tutoriel vidéo php🎜🎜🎜 Enfin, je recommande de lire un cours classique "🎜PHP String Processing (Jade Girl Heart Sutra Edition)🎜", c'est gratuit~ venez apprendre ! 🎜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!