1 /**
2 * php教程获取字符串中英文混合长度
3 * @param $str string 字符串
4 * @param $$charset string 编码
5 * @return 返回长度,1中文=1位,2英文=1位
6 */
7 function strlength($str,$charset='utf-8'){
8 if($charset=='utf-8') $str = iconv('utf-8','gb2312',$str);
9 $num = strlen($str);
10 $cnnum = 0;
11 for($i=0;$i 12 if(ord(substr($str,$i+1,1))>127){
13 $cnnum++;
14 $i++;
15 }
16 }
17 $ennum = $num-($cnnum*2);
18 $number = ($ennum/2)+$cnnum;
19 return ceil($number);
20 }
21
22 //测试输出长度都为15
23 $str1 = '测试测试测试测试测试测试测试测';
24 $str2 = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa';
25 $str3 = 'aa测试aa测试aa测试aa测试aaaaaa';
26 echo strlength($str1,'gb2312');
27 echo strlength($str2,'gb2312');
28 echo strlength($str3,'gb2312');