php怎么处理截取字符串出现的乱码问题

<?php
$string ="大苏打很深刻的骄傲了";
$new_str = mb_substr($string,2,4,"UTF-8");
//mb_substr.截取字符串php内置函数,参数分别为:需要截取的字符串,从第几个字符开始截取,截取几个字符,字符编码转换(utf-8/gbk/big5)等编码进行转换


//*************************************************************************
/*截取中英文混合字符串*/
//*************************************************************************
//二个英文字符对应一个中文字符,$len针对中文数字个数
//flag=0 为无省略点 {$str|ccStrLeft=###,8}|{$str|ccStrLeft=###,8,0}
//flag=1 为有省略点 {$str|ccStrLeft=###,8,1}
function ccStrLeft($str,$len,$flag=0){
    $str=strip_tags($str); //去掉html.php标签 \\"right\\"\""=""
    $from=0;
    $str1=preg_replace('#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$from.'}'. 
'((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$len.'}).*#s', 
'$1',$str); 
    //判断有几个字母
    $str2=str_split($str1);
    $count=0;
    $len1=0;
    foreach($str2 as $k=>$v){
        if((ord($v) & 0x80)==0){  //英文结果为0,中文结果为128
            $count++;
            $len1=ceil($count/2);
        }
    }
    $len=$len+($len1-1);
    $str=preg_replace('#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$from.'}'. 
'((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'.$len.'}).*#s', 
'$1',$str);
    if($flag==1){$str=$str.'...';}
    return $str;
}



http://zhidao.baidu.com/question/1604000924885946147.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值