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

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

墨辰丷
풀어 주다: 2023-03-27 18:00:01
원래의
1844명이 탐색했습니다.

이 글은 주로 PHP 사용자 정의 함수를 사용하여 중국어 문자열의 길이를 계산하는 방법을 소개합니다. 중국어 판별, 인코딩 및 연산과 관련된 PHP의 연산 기술을 예제 형식으로 요약하고 분석합니다.

한자는 2자로 계산됩니다. 영어 문자는 1로 계산됩니다.

code

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

/**

* 可以统计中文字符串长度的函数

*

*/

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는 문자 길이를 결정합니다: 중국어, 영어, 숫자.

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

1

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자이고 나머지는 일부 특수문자이다.

더 안전한 방법입니다.

1

2

3

4

5

6

7

8

9

function StrLenW($str)

{

    $count = 0;

    $len = strlen($str);

     for($i=0; $i<$len; $i++,$count++)

       if(ord($str[$i])>=128)

        $i++;

     return $count;

}

로그인 후 복사

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

코드:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

/**作用:统计字符长度包括中文、英文、数字

* 参数:需要进行统计的字符串、编码格式目前系统统一使用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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿