PHP截取字符串函数,根据dede修改而来

dede中,有一个函数function cn_substr_utf8($str, $length, $start=0)

但测试时,并不如我所想的一样,可能是因为个人使用习惯吧。
比如,字符串为数字或字母这个单字节的字符,截取长度是lenght+1

而当为汉字时,对于dede的写法不明所以,虽然上面有这样一段注释:

 //为了兼容mysql4.1以下版本,与数据库varchar一致,这里使用按字节截取

但还不是特别明白具体用意,按照个人习惯来说,或对于普通用户来讲,截取的长度就是字符个数

于是,将其改了下,如下:

function sub_str($str, $start, $length){
        preg_match_all("/./su", $str, $ar);//正则部分:小写u代表将作utf-8处理
        $ar = $ar[0];
        if(count($ar) < $start+1){
            return '';
        }
        $ar = array_slice($ar ,$start ,$length);
        
        return implode('',$ar);
    }

posted @ 2013-11-28 11:22  一枪把世界杀了  阅读(544)  评论(0编辑  收藏  举报