开发者社区> 问答> 正文

关于PHP截取中英文字符串的问题

代码:

function substr_len($str, $len, $charset='utf-8'){
$len = intval($len);
if(!is_numeric($len) || $len < 0){
return false;
}
$str_len = strlen($str);
if($len >= $str_len){
    return $str;
}

if($charset == 'utf-8'){
    $char_step = 3;
}else{
    $char_step = 2;
}

$substr_i = 0;//截取长度
$act_substr = 0;

for($i = 0; $i < $str_len; $i++){
    if($substr_i >= $len){
        break;
    }

    $sub_val = substr($str, $i, 1);

    if(ord($sub_val) > 0xa0){
        $i += $char_step - 1;
        $act_substr += $char_step;
    }else{
        $act_substr ++;
    }
    $substr_i++;
}
$result_str = substr($str, 0, $act_substr);
return $result_str;
}

展开
收起
小旋风柴进 2016-03-09 11:47:41 2365 0
1 条回答
写回答
取消 提交回答
  • 一、中文截取:mb_substr()

    mb_substr( $str, $start, $length, $encoding ) 
    
    $str,需要截断的字符串 
    $start,截断开始处,起始处为0 
    $length,要截取的字数 
    $encoding,网页编码,如utf-8,GB2312,GBK 

    实例:

    <?php 
    $str='云栖社区:http://www.jb51.net'; 
    echo mb_substr($str,0,4,'utf-8');//截取头5个字,假定此代码所在php文件的编码为utf-8 
    ?> 

    结果显示:云栖社区

    二、获取中文长度:mb_strlen()

    mb_strlen( $str, $encoding ) 
    
    $str,要计算长度的字符串 
    $encoding,网页编码,如utf-8,GB2312,GBK 

    实例:

    <?php 
    $str='脚本之家:http://www.jb51.net'; 
    echo mb_strlen($str,'utf-8');//假定此代码所在php文件的编码为utf-8 
    ?> 
    结果显示:24 
    2019-07-17 18:55:45
    赞同 展开评论 打赏
问答分类:
PHP
问答地址:
问答排行榜
最热
最新

相关电子书

更多
PHP 2017.北京 全球开发者大会——高可用的PHP 立即下载
PHP安全开发:从白帽角度做安全 立即下载
复杂PHP系统性能瓶颈排查及优化 立即下载