A15115071701 2015-09-20 12:12 采纳率: 50%
浏览 1447

关于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;

}

  • 写回答

2条回答 默认 最新

  • devmiao 2015-09-20 14:55
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 用matlab 设计一个不动点迭代法求解非线性方程组的代码
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试