uponcn 发表于 2010-3-19 10:35:05

utf8字符串快速截取

//按字节数截取如果卡在一个字中间就向左移位 直到一个新宽字符结束
function utf8cutlen($s, $l){
    $n = strlen($s);
      if($s == '' || $n <= $l){
            return $s;
      }
      $l--;
      while(strlen($s{$l})){
            $c = ord($s{$l});
                if(!($c&0x80)) return substr($s, 0, $l+1);
                if(($c & 0xC0) == 0xC0) return substr($s, 0, $l);
                $l--;
      }
      return '';
}

//按汉字数截取
function utf8cutnum($s, $l){
    $n = strlen($s);
      $i=$k=0;
      while(strlen($s{$i})){
            $c = ord($s{$i});
                if (!($c & 0x80)) $k+=0.5;
                elseif (($c & 0xC0) == 0xC0) $k++;
                if($k>$l){
                  break;
                }
                $i++;
      }
      return substr($s, 0, $i);
}

本人原创,欢迎指正 uponcn@gmail.com

wintion 发表于 2010-3-26 13:38:38

可以考虑下php自带的:
mb_strcut ( string str, int start [, int length [, string encoding]] )
mb_strlen ( string str [, string encoding] )

uponcn 发表于 2010-3-27 23:38:50

许多空间默认都不支持宽字符截取的
页: [1]
查看完整版本: utf8字符串快速截取