PHP는 UTF8 또는 GBK로 인코딩된 중국어 및 영어 문자열을 가로챕니다.
풀어 주다: 2016-07-25 08:53:51
-
-
//字符串截取 - $a = "s@@你好";
- var_dump(strlen_weibo($a,'utf-8'));
- 结果输出为8,其中字母s计数为1,全角@计数为2,半角@计数为1,两个中文计数为4。源码如下:
//截取字符串的函数代码
- function strlen_weibo($string, $charset='utf-8')
- {
- $n = $count = 0;
- $length = strlen($string);
- if (strtolower($charset) == 'utf-8')
- {
- while ($n < $length)
- {
- $currentByte = ord($string[$n]);
- if ($currentByte == 9 ||
- $currentByte == 10 ||
- (32 <= $currentByte && $currentByte <= 126)) // bbs.it-home.org
- {
- $n ;
- $count ;
- } elseif (194 <= $currentByte && $currentByte <= 223)
- {
- $n = 2;
- $count = 2;
- } elseif (224 <= $currentByte && $currentByte <= 239)
- {
- $n = 3;
- $count = 2;
- } elseif (240 <= $currentByte && $currentByte <= 247)
- {
- $n = 4;
- $count = 2;
- } elseif (248 <= $currentByte && $currentByte <= 251)
- {
- $n = 5;
- $count = 2;
- } elseif ($currentByte == 252 || $currentByte == 253)
- {
- $n = 6;
- $count = 2;
- } else
- {
- $n ;
- $count ;
- }
- if ($count >= $length)
- {
- break;
- }
- }
- return $count;
- } else
- {
- for ($i = 0; $i < $length; $i )
- {
- if (ord($string[$i]) > 127)
- {
- $i ;
- $count ;
- }
- $count ;
- }
- return $count;
- }
- }
-
复制代码
|
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
-
2024-10-22 09:46:29
-
2024-10-13 13:53:41
-
2024-10-12 12:15:51
-
2024-10-11 22:47:31
-
2024-10-11 19:36:51
-
2024-10-11 15:50:41
-
2024-10-11 15:07:41
-
2024-10-11 14:21:21
-
2024-10-11 12:59:11
-
2024-10-11 12:17:31