网站地图    收藏   

主页 > php专栏 > php函数大全 >

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

来源:自学PHP网    时间:2014-11-25 00:26 作者: 阅读:

[导读] 如果直接使用substr截取中文字符串肯定会出乱码的,因为他会把一个汉字分成一半,为什么会这样,因为机器内部编码的问题,现在我们来看处理办法1、使用mbstring扩展库的mb_substr截取就不会...

php substr中文乱码解决办法

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

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

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

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

PHP实例代码如下:

  1.  * 可以避免乱码的截取汉字 
  2.  * 参数 $str 为字符串,$start 为开始字符,$len 结束字符 
  3.  * 返回截取后的字符 
  4.  */ 
  5. function msubstr($str$start$len) {  
  6.  $tmpstr = "";//开源代码phpfensi.com 
  7.  $strlen = $start + $len;  
  8.  for($i = 0; $i < $strlen$i++) {  
  9.   if(ord(substr($str$i, 1)) > 0xa0) {  
  10.    $tmpstr .= substr($str$i, 2);  
  11.    $i++;  
  12.   } else  
  13.    $tmpstr .= substr($str$i, 1);  
  14.  }  
  15.  return $tmpstr;  

方法二,php实现中文字串截取无乱码的方法,代码如下:

  1. function gbsubstr($string$start$length) { 
  2. if(strlen($string)>$length){ 
  3.    $str=null; 
  4.    $len=$start+$length
  5.    for($i=$start;$i<$len;$i++){ 
  6.     if(ord(substr($string,$i,1))>0xa0){ 
  7.      $str.=substr($string,$i,2); 
  8.      $i++; 
  9.     }else
  10.      $str.=substr($string,$i,1); 
  11.     } 
  12.    } 
  13.    return $str.'...'
  14. }else
  15.    return $string
  16. ?> 

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论