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

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

墨辰丷
墨辰丷원래의
2018-05-23 17:25:251800검색

이 글은 주로 PHP 사용자 정의 함수를 사용하여 중국어 문자열의 길이를 계산하는 방법을 소개합니다. 중국어 판별, 인코딩 및 연산과 관련된 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 기술

PHP문자열에 다른 문자열이 포함되어 있는지 간단히 확인하세요. Tips

form_php에서 동일한 이름을 가진 여러 입력 요소의 값을 가져오는 PHP CI 코드 Tips

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

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