使用substr截取utf - 8中文字符串时出现乱码如何解决

介绍

本篇文章给大家分享的是有关使用substr截取utf - 8中文字符串时出现乱码如何解决,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

<强>

代码如下:


& lt; ?
$ str=& # 39;都知道strlen与mb_strlen是求字符串长度的函数& # 39;;
回声strlen (str) & # 39;灵活;br/祝辞& # 39;.mb_strlen (str美元,& # 39;utf - 8 # 39;);
?在


运行上述代码,返回值如下:
66
34
怎么样? strlen中,中文是三个字节的长度,英文则是一个字节的长度! mb_strlen中,都被计算为一字节的长度,所以,我们有时候用字符串的子串来截取utf - 8中文字符串的时候,经常会出现乱码,就是这个原因了!
下面提供一个截取utf - 8字符串的函数:

代码如下:


函数cutstr (sourcestr, cutlength美元){
$ returnstr=& # 39; & # 39;;
$ i=0;
$ n=0;
$ str_length=strlen ($ sourcestr);
$ mb_str_length=mb_strlen (sourcestr美元,& # 39;utf - 8 # 39;);
, (($ n & lt;cutlength美元),,(我& lt;美元=$ str_length)) {
$ temp_str=substr (sourcestr,我美元,1);
$ ascnum=奥德($ temp_str);
如果(ascnum的在美元=224){
returnstr=returnstr.substr美元(sourcestr美元,美元我,3);
我=$ + 3美元;
$ n + +;
}
elseif (ascnum的在美元=192){
returnstr=returnstr.substr美元(sourcestr,我美元,2);
我=$ + 2美元;
$ n + +;
}
elseif ((ascnum的在美元=65),,(ascnum & lt;美元=90)){
returnstr=returnstr.substr美元(sourcestr美元,美元我,1),
我=$ + 1美元;
$ n + +;
}
其他{
returnstr=returnstr.substr美元(sourcestr美元,美元我,1),
我=$ + 1美元;
n=n + 0.5美元;
}
}
if ($ mb_str_length比;cutlength美元){
returnstr=returnstr美元。“……“
}
返回returnstr美元;
}


使用例子:

代码如下:


& lt; ?
$ str=& # 39;有效期最长三个月,超过有效期系统将自动删除本条信息& # 39;;
//echo strlen (str)美元;
//echo & # 39; & lt;人力资源/祝辞& # 39;.mb_strlen (str美元,& # 39;utf - 8 # 39;);
回声& # 39;& lt;人力资源/祝辞& # 39;str美元;
回声& # 39;& lt;人力资源/祝辞& # 39;.cutstr (str 24美元);
?在

以上就是使用substr截取utf - 8中文字符串时出现乱码如何解决,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

使用substr截取utf - 8中文字符串时出现乱码如何解决