用户
 找回密码
 入住 CI 中国社区
搜索
查看: 4715|回复: 2
收起左侧

[辅助方法 Helper] utf8字符串快速截取

[复制链接]
发表于 2010-3-19 10:35:05 | 显示全部楼层 |阅读模式
PHP复制代码
//按字节数截取  如果卡在一个字中间就向左移位 直到一个新宽字符结束
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

评分

参与人数 1威望 +5 收起 理由
Hex + 5 原创内容

查看全部评分

发表于 2010-3-26 13:38:38 | 显示全部楼层
可以考虑下php自带的:
mb_strcut ( string str, int start [, int length [, string encoding]] )
mb_strlen ( string str [, string encoding] )
 楼主| 发表于 2010-3-27 23:38:50 | 显示全部楼层
许多空间默认都不支持宽字符截取的

本版积分规则