Maison  >  Article  >  développement back-end  >  Chaîne PHP apprenant à renvoyer la longueur des caractères chinois ou des caractères mixtes

Chaîne PHP apprenant à renvoyer la longueur des caractères chinois ou des caractères mixtes

青灯夜游
青灯夜游original
2021-08-09 17:28:502063parcourir

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 &#39;字符串 “&#39;.$str.&#39;” 的长度为:&#39;.strlen($str).&#39;<br>&#39;;
?>

Le résultat de sortie est :

Chaîne PHP apprenant à renvoyer la longueur des caractères chinois ou des caractères mixtes

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 &#39;字符串 “&#39;.$str.&#39;” 的长度为:&#39;.mb_strlen($str,&#39;utf-8&#39;).&#39;<br>&#39;;
?>

输出结果为:

Chaîne PHP apprenant à renvoyer la longueur des caractères chinois ou des caractères mixtes

可以看出:字符串$str中,中文+英文+感叹号,一个有11个字符,输出结果也为11。对了,找到对的人了~

mb_strlen() 函数中无论是汉字,还是英文、数字、小数点、下划线和空格,都只占一个字节。

下面我们来简单了解一下mb_strlen() 函数。

mb_strlen($string,$encoding)函数可以通过设置字符编码从而返回对应的字符数;该函数接受一个必需参数$string(需要检测的字符串)和一个可省略的参数$encoding(字符编码),如果省略则使用内部字符编码。

我们可以通过设置对应的$encoding

Mais une telle longueur de chaîne n'est pas ce que nous voulons. Comment gérer les caractères chinois et calculer avec précision la longueur de la chaîne mixte chinois et anglais ou chinoise pure que nous voulons ?

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 :

Chaîne PHP apprenant à renvoyer la longueur des caractères chinois ou des caractères mixtes🎜🎜On peut voir : chaîne $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~
🎜🎜🎜La fonction mb_strlen(), qu'il s'agisse de caractères chinois, d'anglais, de chiffres, de points décimaux, de traits de soulignement et d'espaces, ne prend qu'un octet. 🎜🎜🎜Jetons un bref aperçu de la fonction mb_strlen(). La fonction 🎜🎜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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn