Maison >développement back-end >tutoriel php >Explication détaillée de la façon d'utiliser la fonction personnalisée PHP pour compter la longueur des chaînes chinoises

Explication détaillée de la façon d'utiliser la fonction personnalisée PHP pour compter la longueur des chaînes chinoises

墨辰丷
墨辰丷original
2018-05-23 17:25:251859parcourir

Cet article présente principalement la méthode de comptage de la longueur des chaînes chinoises à l'aide des fonctions personnalisées PHP. Il résume et analyse les compétences opérationnelles de PHP liées à la détermination, à l'encodage et au fonctionnement du chinois sous forme d'exemples. 🎜>

Les caractères chinois comptent pour 2 caractères. Les caractères anglais comptent pour 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;
}

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;);

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 7 652 caractères, le reste étant 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;
}

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;
}

Ce qui précède est l'intégralité du contenu de cet article, j'espère qu'il sera utile à l'étude de chacun.


Recommandations associées :

PHP Implémentation de la création d'un fichier, de l'écriture de données dans le fichier, de l'écrasement et de l'ajout Compétences Code_php

PHPUne méthode simple pour déterminer si une chaîne contient une autre compétence string_php

code php ci pour obtenir les valeurs de plusieurs éléments d'entrée portant le même nom dans le formulaire_php conseils

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