php截取中文無亂碼

/*
    utf-8編碼下截取中文字符串,參數能夠參照substr函數
    @param $str 要進行截取的字符串
    @param $start 要進行截取的開始位置,負數爲反向截取
    @param $end 要進行截取的長度
*/
function utf8_substr($str,$start=0) {
    if(empty($str)){
        return false;
    }
    if (function_exists('mb_substr')){
        if(func_num_args() >= 3) {
            $end = func_get_arg(2);
            return mb_substr($str,$start,$end,'utf-8');
        }
        else {
            mb_internal_encoding("UTF-8");
            return mb_substr($str,$start);
        }       
 
    }
    else {
        $null = "";
        preg_match_all("/./u", $str, $ar);
        if(func_num_args() >= 3) {
            $end = func_get_arg(2);
            return join($null, array_slice($ar[0],$start,$end));
        }
        else {
            return join($null, array_slice($ar[0],$start));
        }
    }
}
相關文章
相關標籤/搜索