>  기사  >  백엔드 개발  >  사용자 정의 함수를 사용하여 PHP에서 중국어 문자열 길이를 계산하는 방법에 대한 자세한 예

사용자 정의 함수를 사용하여 PHP에서 중국어 문자열 길이를 계산하는 방법에 대한 자세한 예

怪我咯
怪我咯원래의
2017-07-04 12:03:101421검색

이 글은 중국어 문자열길이의 통계를 구현하기 위한 php커스텀 함수의 방법을 주로 소개합니다. 중국어 판단, 인코딩, 연산과 관련된 PHP의 연산 기술을 정리하고 분석한 내용입니다. 도움이 필요한 친구들이 참고할 수 있습니다. to it

이 글의 예에서는 PHP 사용자 정의 함수를 사용하여 중국어 문자열의 길이를 계산하는 방법을 설명합니다. 참고를 위해 모든 사람과 공유하세요. 세부 사항은 다음과 같습니다.

한자는 2자로 계산되고, 영어 문자는 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;
}

또 다른: PHP가 문자 길이를 결정합니다: 중국어, 영어 , 숫자.

이를 수행하는 방법에는 여러 가지가 있습니다. 간단한 것을 녹음해 보세요.

mb_strlen($str, &#39;GBK&#39;);

단점은 mb 라이브러리를 설치해야 한다는 것입니다.

그러나 아직 해결해야 할 문제가 몇 가지 있습니다.

GB 코드 인코딩 규칙은 다음과 같습니다. 각 한자는 2바이트로 구성되며 첫 번째 바이트 범위는 0XA1-0XFE이며 총 96가지 유형입니다. 두 번째 바이트의 범위는 각각 0XA1-0XFE이며 총 96가지 유형입니다. 이 2바이트를 사용하여 총 96 * 96 = 8836개의 한자를 정의할 수 있습니다. 실제로 총 6763개의 한자가 있습니다.

BIG5 코드 인코딩 규칙은 다음과 같습니다: 각 한자는 2바이트로 구성되며 첫 번째 바이트 범위는 0X81-0XFE이며 총 126개 유형입니다. 두 번째 바이트의 범위는 0X40-0X7E, 0XA1-0XFE, 총 157개 유형이다. 즉, 이 2바이트를 이용하면 총 126*157=19782개의 한자를 정의할 수 있다. 이러한 한자 중 Yi, D와 같이 우리가 일반적으로 사용하는 문자는 일반적으로 사용되는 문자라고 하며 해당 BIG5 코드의 범위는 0XA440부터 0XC671까지 총 5401자입니다. "tan" 및 "diao"와 같이 덜 일반적으로 사용되는 문자를 하위 공통 문자라고 하며 0XC940부터 0XF9FE까지 총 7652자입니다. 나머지는 일부 특수 문자입니다.

더 안전한 방법입니다.

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

마지막으로 다음은 정확하고 보편적입니다!

코드:

/**作用:统计字符长度包括中文、英文、数字
* 参数:需要进行统计的字符串、编码格式目前系统统一使用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;
}

위 내용은 사용자 정의 함수를 사용하여 PHP에서 중국어 문자열 길이를 계산하는 방법에 대한 자세한 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.