在系统不支持iconv和mb系列的函数的时候,我们就不能和使用mb_substr来截取字符了。参考了discuz的截取字符串的函数和类似的,方法都差不多,都是按照字符来截取,原理是逐字符判断,这里我自己写了个函数。代码不多,如下:
function substring($str,$start=0;$length=200,$suffix="...")
{
preg_match_all("/(\S)/u",$str,$res);
return join("",array_slice($res[1],$start,$length)).$suffix;
}
尽管效率比mb_substr低了很多,但是也足够了。要说明的是这里忽略了空白和换行字符