首页>>新闻中心>>PHP学习

解决用substr()函数对中文字符串截取时出现的乱码的问题

来源: 本站    发布时间: 2014-10-30 22:10    阅读次数:

使用substr()函数时按字节截取字符串的,在截取中文字符串时,由于一个汉字是由两个字符串组成,如果只截取一个字符就会出现乱码。

对中文字符串的截取虽说是通过自定义函数来完成,但是其根本还是应用substr()函数,只是在进行字符串截取时,对字符串的类型进行了判断。

对截取字符串中首个字节的ASCII序数值进行判断,如果ASCII序数值大于0xa0,则表示为汉字,那么在应用substr()函数进行截取时,就以2个字节为单位;如果ASCII序值小于0xa0,则表示为英文字符串,那么在应用substr()函数进行截取时,就以1个字节为单位,这样将中文字符串和英文字符串分割进行截取就避免出现乱码的问题。

自定义函数msubstr()的语法如下:

function msubstr($str,$start,$len){

$strlen=$start+$len;

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

{    

    if(ord(substr($str,$i,1))>0xa0){

    $tmpstr.=substr($str,$,2i);

    $i++;

}else{

    $tmpstr.=$substr($str,$i,1);

}

}

return $tmpstr;

}

其中,参数$str是指定被截取的字符串;参数$strart 是截取的开始位置参数$len 是截取的长度。$tmpstr是截取后的字符串。

文章来源:一起设计吧
一起设计吧
BACK