PHP中实现中笔墨串截取无乱码的办理要领
在PHP中,substr()函数截取带有中笔墨符串的话,也许会呈现乱码,这是由于中西文一个字节所占据的字节数纷歧样,而substr的长度参数是凭证字节去算的,在GB2312编码时,一此中文占2个字节,英文为1个字节,而在UTF-8编码傍边,一此中文也许占据2个或3个字节,英文或半角标点占1字节。 直接行使PHP函数substr截取中笔墨符也许会呈现乱码,首要是substr也许硬生生的将一此中笔墨符“锯”成两半。办理步伐: 1、行使mbstring扩展库的mb_substr截取就不会呈现乱码了。 2、本身誊写截取函数,但服从不如用mbstring扩展库来得高。 3、假如仅是为了输出截取的串,可用如下方法实现:substr($str,30).chr(0)。 ============================= substr()函数可以支解笔墨,但要支解的笔墨假如包罗中笔墨符每每会碰着题目,这时可以用mb_substr()/mb_strcut这个函数,mb_substr()/mb_strcut的用法与substr()相似,只是在mb_substr()/mb_strcut最后要插手多一个参数,以设定字符串的编码,可是一样平常的处事器都没打开php_mbstring.dll,必要在php.ini在把php_mbstring.dll打开。 举个例子: 输出:这样一来我的字输出:这样一 从上面的例子可以看出,mb_substr是按字来切分字符,而mb_strcut是按字节来切分字符,可是都不会发生半个字符的征象。 ============================= PHP实现中笔墨串截取无乱码的要领$length){ $str=null; $len=$start+$length; for($i=$start;$i<$len;$i++){ if(ord(substr($string,$i,1))>0xa0){ $str.=substr($string,2); $i++; }else{ $str.=substr($string,1); } } return $str.'...'; }else{ return $string; } }【实现中笔墨串截取无乱码的要领--合用于utf-8】 总结以上所述是小编给各人先容的PHP中实现中笔墨串截取无乱码的办理要领,但愿对各人有所辅佐。措施员碰着题目城市上(编程之家52php.cn)查找题目解答要领!假如认为站点还不错,顺手转发给措施员伴侣一下! (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |