搜索热词
《PHP中文字符串截断无乱码解决方法》要点:
本文介绍了PHP中文字符串截断无乱码解决方法,希望对您有用。如果有疑问,可以联系我们。
截取函数:
截取函数
$len = $length;
if($length < 0){
$str = strrev($str);
$len = -$length;
}
$len= ($len < strlen($str)) ? $len : strlen($str);
$tmpstr = "";
for ($i= $start; $i < $len; $i ++)
{
if (ord(substr($str,$i,1)) > 0xa0)
{
$tmpstr .= substr($str,2);
$i++;
} else {
$tmpstr .= substr($str,1);
}
}
if($length < 0) $tmpstr = strrev($tmpstr);
return $tmpstr;
}
方法示例:
中文不带英文';
$str2 = '我是一串比较长的中文带yingwen';
$len = strlen($str1);
echo '
'.$len; //return 28
$len = strlen($str2);
echo '
'.$len; //return 29
echo '
';
echo substring($str1,11);
echo '
';
echo substring($str2,11);
echo '
';
echo substring($str1,16,28);
echo '
';
echo substring($str2,29);
显示:
中文不带英文
中文带yingwen
函数十分有用,比如用来截断比较长的文件名,但是要在中间加上...,可以这样来做:
中文截断解决方案,试用了一下,效果也不错:
echo substr($str1,10).chr(0);
显示出什么,但是他是一个字符.
09当汉字被截断时,根据编码规则他总是要把后边的其他字符拉过来一起作为汉字解释,这就是出现乱码的原因.而值为0x81到0xff与0x00组合始终都显示为“空”
10根据这一特点,在substr的结果后面补上一个chr(0),就可以防止出现乱码了
方法虽好,但是偶尔还是会碰到乱码,原因未深究.不过可以用以下的方法,对UTF8字符文本屡试不爽.
注意:该方法中将汉字计算为1单位长度,英文一个字母1单位长度,所以截断时需要注意长度设置.
计算长度的方法:
函数:
方法和之前介绍的一样,比如formatName可以实现如下(这对汉字长度做了小优化):
内容,希望对大家的学习有所帮助,也希望大家多多支持编程之家.
总结
如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。