This topic created in 4184 days ago, the information mentioned may be changed or developed.
网上找到了一个替换的函数,function utf8Substr($str, $from, $len){
return preg_replace('#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$from.'}'.
'((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$len.'}).*#s',
'$1',$str);
}
不知道怎么改成获取长度的函数,先谢谢大家了
5 replies • 2014-12-29 08:39:49 +08:00
 |
|
2
lincanbin Dec 28, 2014
一个简单的实现,用正则把\x00-\xff替换为任意3个字符即可,然后用字符串长度函数处理即可。 例如把\x00-\xff替换成***,然后substr
|
 |
|
3
kankana Dec 28, 2014
我有次google, 英文的资料找了好久都找不到, 只好试试中文, 发现csdn也有人遇到同样的问题.
点进去一看, 发现楼主已经把问题解决了, 回贴"问题已经解决".
看了接下来的几层楼, 发现有人在骂楼主.
你知道那个楼主为什么被骂吗?
|
 |
|
5
soeeeeee Dec 29, 2014 1
代码: 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<$num;$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 }
|