好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

php substr中文乱码解决办法 - php函数

php substr中文乱码解决办法

如果直接使用substr截取中文字符串肯定会出乱码的,因为他会把一个汉字分成一半,为什么会这样,因为机器内部编码的问题,现在我们来看处理办法

1、使用mbstring扩展库的mb_substr截取就不会出现乱码了。

2、自己书写截取函数,但效率不如用mbstring扩展库来得高。

3、如果仅是为了输出截取的串,可用如下方式实现:substr($str, 0, 30).chr(0).

PHP实例代码如下:

 * 可以避免乱码的截取汉字   * 参数  $str  为字符串, $start  为开始字符, $len  结束字符   * 返回截取后的字符   */  function  msubstr( $str ,  $start ,  $len ) {     $tmpstr  =  "" ; //开源代码phpfensi测试数据     $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 ;  }  }  ?> 

查看更多关于php substr中文乱码解决办法 - php函数的详细内容...

  阅读:44次