Exemple détaillé de la façon dont PHP utilise des fonctions personnalisées pour compter la longueur des chaînes chinoises

怪我咯
Libérer: 2023-03-12 14:46:02
original
1402 Les gens l'ont consulté

Cet article présente principalement la méthode de phpfonction personnalisée pour obtenir des statistiques sur la longueur du chinoischaîne Il résume et analyse la détermination, l'encodage et le fonctionnement de PHP liés au chinois dans le. sous forme d'exemples. Pour des compétences opérationnelles, les amis dans le besoin peuvent se référer à

Cet article décrit l'exemple d'utilisation des fonctions personnalisées PHP pour compter la longueur des chaînes chinoises. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :

Les caractères chinois sont calculés comme 2 caractères et les caractères anglais sont calculés comme 1

Code

/**
* 可以统计中文字符串长度的函数
*
*/
function abslength($str)
{
  $len=strlen($str);
  $i=0;
  while($i<$len)
  {
    if(preg_match("/^[".chr(0xa1)."-".chr(0xff)."]+$/",$str[$i]))
    {
      $i+=2;
    }
    else
    {
      $i+=1;
    }
  }
  return $i;
}
Copier après la connexion

Autre : PHP détermine la longueur des caractères : chinois, anglais, chiffres.

Il existe de nombreuses façons de procéder. Enregistrez-en un simple.

mb_strlen($str, &#39;GBK&#39;);
Copier après la connexion

L'inconvénient est que vous devez installer la bibliothèque mb.

Cependant, il reste encore quelques problèmes à résoudre.

Les règles de codage du code GB sont les suivantes : chaque caractère chinois se compose de deux octets, le premier octet va de 0XA1 à 0XFE, soit un total de 96 types. La plage du deuxième octet est respectivement 0XA1-0XFE, soit un total de 96 types. Un total de 96 * 96 = 8836 caractères chinois peuvent être définis à l'aide de ces deux octets. Il y a en réalité 6763 caractères chinois au total.

Les règles de codage du code BIG5 sont les suivantes : chaque caractère chinois se compose de deux octets, le premier octet va de 0X81 à 0XFE, soit un total de 126 types. La plage du deuxième octet est 0X40-0X7E, 0XA1-0XFE, soit un total de 157 types. En d’autres termes, un total de 126 * 157 = 19 782 caractères chinois peuvent être définis à l’aide de ces deux octets. Certains de ces caractères chinois sont couramment utilisés par nous, comme Yi et D. Ces caractères sont appelés caractères couramment utilisés et leurs codes BIG5 vont de 0XA440 à 0XC671, soit un total de 5 401 caractères. Les caractères moins couramment utilisés, tels que "tan" et "diao", sont appelés caractères moins couramment utilisés, allant de 0XC940 à 0XF9FE, soit un total de 7652 caractères. Le reste est constitué de caractères spéciaux .

Une approche plus sûre.

function StrLenW($str)
{
    $count = 0;
    $len = strlen($str);
     for($i=0; $i<$len; $i++,$count++)
       if(ord($str[$i])>=128)
        $i++;
     return $count;
}
Copier après la connexion

Enfin, ce qui suit est correct et universel !

Code :

/**作用:统计字符长度包括中文、英文、数字
* 参数:需要进行统计的字符串、编码格式目前系统统一使用UTF-8
* 修改记录:
   $str = "kds";
  echo sstrlen($str,&#39;utf-8&#39;);
* */
function sstrlen($str,$charset) {
    $n = 0; $p = 0; $c = &#39;&#39;;
    $len = strlen($str);
    if($charset == &#39;utf-8&#39;) {
      for($i = 0; $i < $len; $i++) {
        $c = ord($str{$i});
        if($c > 252) {
          $p = 5;
        } elseif($c > 248) {
          $p = 4;
        } elseif($c > 240) {
          $p = 3;
        } elseif($c > 224) {
          $p = 2;
        } elseif($c > 192) {
          $p = 1;
        } else {
          $p = 0;
        }
        $i+=$p;$n++;
      }
    } else {
      for($i = 0; $i < $len; $i++) {
        $c = ord($str{$i});
        if($c > 127) {
          $p = 1;
        } else {
          $p = 0;
      }
        $i+=$p;$n++;
      }
    }
    return $n;
}
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!