截取GBK字符串的问题~~~~
这是一个截取GBK字符串的函数:
PHP code
function gb_substr( $str , $len ){
$count = 0;
for ( $i =0; $i < strlen ( $str ); $i ++){
if ( $count == $len ) break ;
if (preg_match( "/[\x80-\xff]/" , substr ( $str , $i , 1))){
++ $i ;
}
++ $count ;
}
return substr ( $str , 0, $i );
}
我的问题是,GBK和GB2312每个字符不肯定是2个字节吗?那直接用要截取的长度*2不完了吗?
比如我要截取3个字符:3*2=6 也就是我要截取到6的位置。
这么想对吗?
------解决方案--------------------
使用mb系列函数,GBK对非ASCII两个字符,ASCII还是1个字节。
------解决方案--------------------
不对,因为有可能含ascii码的数字或字符