首页 > 代码库 > PHP中的中文截取乱码问题_gb2312_utf-8
PHP中的中文截取乱码问题_gb2312_utf-8
一、字符串编码为gb2312,一个中文占俩字节
?
public static function chinesesubstr( $str , $start , $len ) { // $str指字符串,$start指字符串的起始位置,$len指字符串长度 $strlen = $start + $len ; // 用$strlen存储字符串的总长度,即从字符串的起始位置到字符串的总长度 for ( $i = $start ; $i < $strlen ;) { if (ord ( substr ( $str , $i , 1 ) ) > 0xa0) { // 如果字符串中首个字节的ASCII序数值大于0xa0,则表示汉字 $tmpstr .= substr ( $str , $i , 2 ); // 每次取出两位字符赋给变量$tmpstr,即等于一个汉字 $i = $i +2; // 变量自加2 } else { $tmpstr .= substr ( $str , $i , 1 ); // 如果不是汉字,则每次取出一位字符赋给变量$tmpstr $i ++; } } return $tmpstr ; // 返回字符串 } |
二、字符串编码为utf-8,一个中文占仨字节
?
public static function chinesesubstr( $str , $start , $len ) { // $str指字符串,$start指字符串的起始位置,$len指字符串长度 $strlen = $start + $len ; // 用$strlen存储字符串的总长度,即从字符串的起始位置到字符串的总长度 for ( $i = $start ; $i < $strlen ;) { if (ord ( substr ( $str , $i , 1 ) ) > 0xa0) { // 如果字符串中首个字节的ASCII序数值大于0xa0,则表示汉字 $tmpstr .= substr ( $str , $i , 3 ); // 每次取出三位字符赋给变量$tmpstr,即等于一个汉字 $i = $i +3; // 变量自加3 } else { $tmpstr .= substr ( $str , $i , 1 ); // 如果不是汉字,则每次取出一位字符赋给变量$tmpstr $i ++; } } return $tmpstr ; // 返回字符串 } |
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。