一般情况下我们使用substr截取汉字可能会遇到乱码问题。因为汉字是双字节的,当被截取了一个字节时,这个汉字就无法显示,乱掉了。
其实解决很简单,看下面的截取函数:
//截取超长字符串
function curtStr($str,$len=30){
if(strlen($str)>$len){
$str = substr($str,0,$len);
$str .= chr(0) .”…”;
return $str;
}
上面的chr(0)不是null
null是什么都没有,而chr(0)的值是0。表示成16进制是0×00,表示成二进制是00000000
虽然chr(0)不会显示出什么,但是他是一个字符。
当汉字被截断时,根据编码规则他总是要把后边的其他字符拉过来一起作为汉字解释,这就是出现乱码的原因。而值为0×81到0xff与0×00组合始终都显示为“空”
根据这一特点,在substr的结果后面补上一个chr(0),就可以防止出现乱码了.






最新评论
春节快乐啊^_^兄弟
呵呵,路过,顶一下。
老衲已阅
不错的站,路过看下
来拜访啦,呵呵,留名纪念
闲逛到此,留下印记。顶一下。
路过~~留痕
多少支持一下