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);
}
上面这个函数我用着还好,不过当字符串太长的时候(比如上万字的文章),其就无法正常工作了,返回会为空。比如utf8Substr($str, 0, 100)可以正常工作,但如果是utf8Substr($str, 1000, 100),其就无法正常工作了。
请问大家这个问题怎么解决呢?我认为其似乎开始的地方不能偏移太多,就是$from不能太大,那么能不能反向截取呢?本人对正则实在很白痴,请大家看看怎么解决呢?
5 个解决方案
#1
用 mb_substr函数实现同样功能
#2
mb_substr不会出现乱码吗?上面那个函数一般不会出现乱码。
#3
不会乱码的。。。第四个参数指定编码。使用方式查手册
#4
好的,我试试!
#5
好了,多谢,结贴!
#1
用 mb_substr函数实现同样功能
#2
mb_substr不会出现乱码吗?上面那个函数一般不会出现乱码。
#3
不会乱码的。。。第四个参数指定编码。使用方式查手册
#4
好的,我试试!
#5
好了,多谢,结贴!