加入收藏 | 设为首页 | 会员中心 | 我要投稿 岳阳站长网 (https://www.0730zz.com.cn/)- 科技、建站、数据库平台、数据湖、视觉智能!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php substr中文乱码解决办法

发布时间:2022-07-28 09:38:04 所属栏目:PHP教程 来源:互联网
导读:如果直接使用substr截取中文字符串肯定会出乱码的,因为他会把一个汉字分成一半,为什么会这样,因为机器内部编码的问题,现在我们来看处理办法 1、使用mbstring扩展库的mb_substr截取就不会出现乱码了。 2、自己书写截取函数,但效率不如用mbstring扩展库来得高
    如果直接使用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.com
     $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;
    }
    }
    ?> 

(编辑:岳阳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读