php 中文截断,PHP中文字符串截断无乱码解决方法

本文探讨了PHP中处理中文字符串截断时可能出现的乱码问题,并提供了解决方案。通过调整截取函数,确保在截断时不会产生乱码。此外,文章还分享了一个实际的函数示例,以及在文件名截断等场景的应用。同时,提到了在某些情况下仍可能出现乱码的问题,但推荐了一种适用于UTF8字符文本的方法。
摘要由CSDN通过智能技术生成

搜索热词

《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可以实现如下(这对汉字长度做了小优化):

内容,希望对大家的学习有所帮助,也希望大家多多支持编程之家.

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值