1.截取中文字符無亂碼支持UTF-8、GBK等編碼,原理就是判斷是否有可用擴展,如果有擴展則使用擴展函數,沒有擴展根據中文的ASCII碼進行匹配。
/*
* @param string $str 需要轉換的字符串 * @param string $start 開始位置 * @param string $length 截取長度 * @param string $charset 編碼格式
*/
function msubstr($str, $start=0, $length, $charset="utf-8") { if(function_exists("mb_substr")) return mb_substr($str, $start, $length, $charset); elseif(function_exists('iconv_substr')) { return iconv_substr($str,$start,$length,$charset); } $re['utf-8'] = "/[/x01-/x7f]|[/xc2-/xdf][/x80-/xbf]|[/xe0-/xef][/x80-/xbf]{2}|[/xf0-/xff][/x80-/xbf]{3}/"; $re['gb2312'] = "/[/x01-/x7f]|[/xb0-/xf7][/xa0-/xfe]/"; $re['gbk'] = "/[/x01-/x7f]|[/x81-/xfe][/x40-/xfe]/"; $re['big5'] = "/[/x01-/x7f]|[/x81-/xfe]([/x40-/x7e]|/xa1-/xfe])/"; PReg_match_all($re[$charset], $str, $match); $slice = join("",array_slice($match[0], $start, $length)); return $slice;}
新聞熱點
疑難解答
圖片精選