PHP实现中文字符串切取无乱码

  作者:bea

很多地方我们都会遇到切取字符串的一部分,但是我们烦恼的是切取出的字符串可能出现乱码。比方说我们要给一篇文章实现分页来显示,那么我们就要将文章分为几个部分来显示,这是我们要来给文章分段啦。如何使你分段的字符串没有乱码呢?这里教大家一个函数来实现。 原理:我们通过返回字符串的ASCII码值来判断当前字符是单字节的还是多字节的字符。如果字符串返回的ASCII码值是0xa0,那么我们就认为该字符就是多字节的,也就是汉字字符。使用PHP中的ord()函数可以返回字符的ASCII码值。

很多地方我们都会遇到切取字符串的一部分,但是我们烦恼的是切取出的字符串可能出现乱码。比方说我们要给一篇文章实现分页来显示,那么我们就要将文章分为几个部分来显示,这是我们要来给文章分段啦。如何使你分段的字符串没有乱码呢?这里教大家一个函数来实现。

原理:我们通过返回字符串的ASCII码值来判断当前字符是单字节的还是多字节的字符。如果字符串返回的ASCII码值是0xa0,那么我们就认为该字符就是多字节的,也就是汉字字符。使用PHP中的ord()函数可以返回字符的ASCII码值。这里我们值得注意的是如果你使用的编码是GBK或者GB2312国标码的话,那么一个汉字是2个字节;如果使用的是UTF-8的话,那么一个汉字就是3个字节,这点大家一定要注意。

functionGBsubstr($string,$start,$length){

if(strlen($string)>$length){

$str=null;

$len=$start+$length;

for($i=$start;$i0xa0){

$str.=substr($string,$i,2); //如果使用的编码是UTF8的话处为3,且下面再加一个$i++;

$i++;

}else{

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

}

}

return$str.'...';

}else{

return$string;

}

}

有用  |  无用

猜你喜欢