本文介绍的函数可以统计 UTF-8 字符串的长度,但不同的是,该函数并不考虑字节,这有些类似 Javascript 中字符串的 length 方法,一个字符全部按 1 个长度计算。
PHP:
1
<?
php
2 // 说明:计算 UTF-8 字符串长度(忽略字节的方案)
3 // 整理:http://www.CodeBit.cn
4
5 function strlen_utf8( $str )
6 {
7 $i = 0 ;
8 $count = 0 ;
9 $len = strlen ( $str );
10 while ( $i < $len )
11 {
12 $chr = ord ( $str [ $i ]);
13 $count ++ ;
14 $i ++ ;
15 if ( $i >= $len )
16 break ;
17
18 if ( $chr & 0x80 )
19 {
20 $chr <<= 1 ;
21 while ( $chr & 0x80 )
22 {
23 $i ++ ;
24 $chr <<= 1 ;
25 }
26 }
27 }
28 return $count ;
29 }
30
31 $str = " Codebit.cn - 聚合小段精华代码 " ;
32
33 echo strlen_utf8( $str );
34
35 ?>
2 // 说明:计算 UTF-8 字符串长度(忽略字节的方案)
3 // 整理:http://www.CodeBit.cn
4
5 function strlen_utf8( $str )
6 {
7 $i = 0 ;
8 $count = 0 ;
9 $len = strlen ( $str );
10 while ( $i < $len )
11 {
12 $chr = ord ( $str [ $i ]);
13 $count ++ ;
14 $i ++ ;
15 if ( $i >= $len )
16 break ;
17
18 if ( $chr & 0x80 )
19 {
20 $chr <<= 1 ;
21 while ( $chr & 0x80 )
22 {
23 $i ++ ;
24 $chr <<= 1 ;
25 }
26 }
27 }
28 return $count ;
29 }
30
31 $str = " Codebit.cn - 聚合小段精华代码 " ;
32
33 echo strlen_utf8( $str );
34
35 ?>
上面的代码将返回 21。