检查一下你的程序,肯定是哪多写了一个FFFD,不可能是火狐的问题,你在别的浏览器测试结果呢
试试我这个
function gylsubstr($title,$length){
if($length!=0){
if (strlen($title)>$length) {
$temp = 0;
for($i=0; $i<$length; $i++)
if (ord($title[$i]) > 128)
$temp++;
if ($temp%2 == 0)
$title = substr($title,0,$length);
else
$title = substr($title,0,$length+1);
}
return $title;
}else{return $title;}
}
应该是你截取字符串之后,中文只截取了一半,所以最后一个显示乱码~~
一般中文是按照两个字节算的(utf-8的话是三个字节),假设“字符” 两个字,你如果用
$str = "字符"; // gbk编码字符
echo substr($str, 0, 3); // 这时候,“符”字只取了一半,显示不出来,就可能导致上面的问题了~
您好!很高兴为您答疑!
以截取GB2312中文字符串为例,您试下这种:
//截取中文字符串
function mysubstr($str, $start, $len) {
$tmpstr = "";
$strlen = $start + $len;
for($i = 0; $i < $strlen; $i++) {
if(ord(substr($str, $i, 1)) > 0xa0) {
$tmpstr .= substr($str, $i, 2);
$i++;
} else
$tmpstr .= substr($str, $i, 1);
}
return $tmpstr;
}
?>
您可以在火狐社区了解更多内容。希望我的回答对您有所帮助,如有疑问,欢迎继续在本平台咨询。