在用substr()函数截取时,英文会出现任何问题,但对于中文字符串可能会出现中文显示不正确,如后面会带个“?”字符。这是因为中文是双字节。而substr刚好截取了一个中文字符的一个字节。而引起的。(包括本站Smarty的truncate引起的字符截取)为避免这种情况,以下对substr()进行改进。代码如下: function Timsubstr($string,$start,$length) { $str=""; $str_len=$start+$length; for($i=$start;$i<$str_len;$i++) { if(ord(substr($string,$i,1))>0xa0) { $str.=substr($string,$i,2); $i++; } else $str.=substr($string,$i,1); } if(strlen($string)>$length) return $str."..."; else return $str;} 以上的Timsubstr()可顺利解决以上问题。 |