首页 > 开发 > PHP > 正文

php substr中文乱码解决办法

2024-05-04 23:24:12
字体:
来源:转载
供稿:网友
如果直接使用substr截取中文字符串肯定会出乱码的,因为他会把一个汉字分成一半,为什么会这样,因为机器内部编码的问题。现在我们来看处理办法
1、使用mbstring扩展库的mb_substr截取就不会出现乱码了。
2、自己书写截取函数,但效率不如用mbstring扩展库来得高。
3、如果仅是为了输出截取的串,可用如下方式实现:substr($str, 0, 30).chr(0)。
  * 可以避免乱码的截取汉字
  * 参数 $str 为字符串,$start 为开始字符,$len 结束字符
  * 返回截取后的字符
  */
function msubstr($str, $start, $len) {
  $tmps教程tr = "";
  $strlen = $start + $len;
  for($i = 0; $i < $strlen; $i++) {
   if(ord(substr($str, $i, 1)) > 0xa0) {
    $tmpstr .= substr($str, $i, 2);
    $i++;
   } else
    $tmpstr .= substr($str, $i, 1);
  }
  return $tmpstr;
}
//方法二 php实现中文字串截取无乱码的方法  


function gbsubstr($string, $start, $length) {
if(strlen($string)>$length){
   $str=null;
   $len=$start+$length;
   for($i=$start;$i<$len;$i++){
    if(ord(substr($string,$i,1))>0xa0){
     $str.=substr($string,$i,2);
     $i++;
    }else{
     $str.=substr($string,$i,1);
    }
   }
   return $str.'...';
}else{
   return $string;
}
}

?>
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表