php无乱码切割中文字符的方法

  介绍

这篇文章主要介绍了php无乱码切割中文字符的方法,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。

在php中,substr()函数截取带有中文字符串的话,可能会出现乱码,这是因为中西文一个字节所占有的字节数不一样,而字符串的子串的长度参数是按照字节去算的,在GB2312编码时,一个中文占2个字节,英文为1个字节,而在utf - 8编码当中,一个中文可能占有2个或3个字节,英文或半角标点占1字节。

直接使用php函数substr截取中文字符可能会出现乱码,主要是字符串的子串可能硬生生的将一个中文字符“锯成两半。解决办法:

<强> 1,使用mbstring扩展库的mb_substr截取就不会出现乱码了。

<强> 2,自己书写截取函数,但效率不如用mbstring扩展库来得高。

<强> 3,如果仅是为了输出截取的串,可用如下方式实现:substr (str美元,0,30).chr(0)。

<代码> substr() 函数可以分割文字,但要分割的文字如果包括中文字符往往会遇到问题,这时可以用<代码> mb_substr() /<代码> mb_strcut 这个函数,mb_substr ()/mb_strcut的用法与substr()相似,只是在mb_substr ()/mb_strcut最后要加入多一个参数,以设定字符串的编码,但是一般的服务器都没打开<代码> php_mbstring.dll>

举个例子:

& lt; php ?   回声mb_substr(& # 39;这样一来我的字符串就不会有乱码^ _ ^ & # 39;,0,7日& # 39;utf - 8 # 39;);   比;   输出:这样一来我的字   php & lt; ?   回声mb_strcut(& # 39;这样一来我的字符串就不会有乱码^ _ ^ & # 39;,0,7日& # 39;utf - 8 # 39;);   ?在

输出:这样一

从上面的例子可以看出,mb_substr是按字来切分字符,而mb_strcut是按字节来切分字符,但是都不会产生半个字符的现象。

<强> PHP实现中文字串截取无乱码的方法

函数GBsubstr(字符串,美元开始,长度美元){   如果(strlen(字符串)美元在美元长度){   美元str=零;   len=$ +开始美元长度;   (i=美元开始;i<美元;len美元;美元我+ +){   如果(奥德(substr(字符串,我美元,1))在0 xa0) {   str美元。=substr(字符串,我美元,2);   美元我+ +;   其他}{   str美元。=substr(字符串,我美元,1);   }   }   返回$ str强生# 39;……& # 39;;   其他}{   返回字符串美元;   }   }

<>强实现中文字串截取无乱码的方法,适用于utf - 8

函数substr_text (str,美元开始=0,长度,美元$ charset=皍tf-8", $后缀=啊?   {   如果(function_exists (“mb_substr")) {   返回mb_substr (str,美元开始,长度,美元字符集)。美元后缀;   }   elseif (function_exists (& # 39; iconv_substr& # 39;)) {   返回iconv_substr (str,美元开始,长度,美元字符集)。美元后缀;   }   $再保险[& # 39;utf - 8 # 39;]=?[\ x01 - \ x7f] | [\ xc2 - \ xdf] [\ x80 - \ xbf] | [\ xe0 - \ xef] [\ x80 - \ xbf] {2} | [\ xf0 - \ xff] [\ x80 - \ xbf] {3}/?;   $再保险[& # 39;gb2312 # 39;]=?[\ x01 - \ x7f] | [\ xb0 - \ xf7] [\ xa0 -以\ xfe]/?;   $再保险[& # 39;gbk # 39;]=?[\ x01 - \ x7f] | [\ x81 -以\ xfe][以——\ \ x40 xfe]/?;   $再保险[& # 39;繁体# 39;]=?[\ x01 - \ x7f] | [\ x81 -以\ xfe] ([\ x40 - \ x7e] | \ xa1 -以\ xfe])/?;   preg_match_all (re(字符集)美元,美元str, $匹配);   片=加入美元(““,array_slice(匹配[0],美元开始,长度)美元);   返回片。美元后缀;   }

感谢你能够认真阅读完这篇文章,希望小编分享php无乱码切割中文字符的方法内容对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,遇到问题就找,详细的解决方法等着你来学习!

php无乱码切割中文字符的方法