截取GBK字符串的有关问题~
截取GBK字符串的问题~~~~这是一个截取GBK字符串的函数:PHP codefunctiongb_substr( $str ,$len ){$count
截取GBK字符串的问题~~~~
这是一个截取GBK字符串的函数:
PHP codefunction 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码的数字或字符