青岛做网站
新闻动态

如何避免截取中文字符串时出现乱码

2019-03-04来源:青岛做网站
   在我们进行网站开始时,有时为了保持整个网站页面的不及,经常需要对一些比较长的字符串进行截取,但是由于汉字中文字符占用两个字符,如果截取位置不当,将会导致截取的字符串末尾出现乱码,

   其实,截取字符串时我们会经常用到substr()函数来对普通字符串进行截取操作,对于普通字符串来说使用substr()函数也是非常方便的,但是对全角字符进行截取时会产生乱码。为了解决和避免截取中文字符串时出现乱码问题,我们可以通过自定义函数chinesesubstr()来屏蔽乱码,该函数的代码如下:

<?php

 function chinesesubstr($str,$start,$len) {   //$str指字符串,$start指字符串的起始位置,$len指字符串长度

    $strlen=$start+$len;                                      //$strlen存储字符串的总长度,即从字符串的起始位置到字符串的总长度

    for($i=0;$i<$strlen;$i++) {                                                  

        if(ord(substr($str,$i,1))>0xa0) {       //如果字符串中首个字节的ASCII序数值大于0xa0,则表示汉字

            $tmpstr.=substr($str,$i,2);         //每次取出两位字符赋给变量$tmpstr,即等于一个汉字

            $i++;                                                //变量自加1

        }

      else

            $tmpstr.=substr($str,$i,1);             //如果不是汉字,则每次取出一位字符赋给变量$tmpstr

    }

    return $tmpstr;                                          //返回字符串

}

?>

以上就是自定义函数chinesesubstr(),假如我们要使用这个函数来截取标题长度为100个字节,代码如下:

chinesesubstr($title,0,100)

这样在使用chinesesubstr()截取字符串时就可以避免截取中文字符串时出现乱码的问题。

上一篇:网站中实现投票系统功能模块概述-设计思路     下一篇: 在php中如何实现Ajax无刷新分页功能