php下檢測字符串是否是utf8編碼的代碼
更新時間:2008年06月28日 00:18:48 作者:
給一個字符串,怎么判斷它是什么編碼呢?php有一個函數(shù):mb_detect_encoding。不過這個東西需要有mb_string庫,不是到處都能用的。
function is_utf8($string) {
return preg_match('%^(?:
[\x09\x0A\x0D\x20-\x7E] # ASCII
| [\xC2-\xDF][\x80-\xBF] # non-overlong 2-byte
| \xE0[\xA0-\xBF][\x80-\xBF] # excluding overlongs
| [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte
| \xED[\x80-\x9F][\x80-\xBF] # excluding surrogates
| \xF0[\x90-\xBF][\x80-\xBF]{2} # planes 1-3
| [\xF1-\xF3][\x80-\xBF]{3} # planes 4-15
| \xF4[\x80-\x8F][\x80-\xBF]{2} # plane 16
)*$%xs', $string);
}
準確率基本和mb_detect_encoding一樣,要對一起對,要錯一起錯。
編碼檢測不可能100%準確,這個東西已經(jīng)可以基本滿足要求了。
return preg_match('%^(?:
[\x09\x0A\x0D\x20-\x7E] # ASCII
| [\xC2-\xDF][\x80-\xBF] # non-overlong 2-byte
| \xE0[\xA0-\xBF][\x80-\xBF] # excluding overlongs
| [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2} # straight 3-byte
| \xED[\x80-\x9F][\x80-\xBF] # excluding surrogates
| \xF0[\x90-\xBF][\x80-\xBF]{2} # planes 1-3
| [\xF1-\xF3][\x80-\xBF]{3} # planes 4-15
| \xF4[\x80-\x8F][\x80-\xBF]{2} # plane 16
)*$%xs', $string);
}
準確率基本和mb_detect_encoding一樣,要對一起對,要錯一起錯。
編碼檢測不可能100%準確,這個東西已經(jīng)可以基本滿足要求了。
您可能感興趣的文章:
- php實現(xiàn)HTML實體編號與非ASCII字符串相互轉換類實例
- php實現(xiàn)圖片轉換成ASCII碼的方法
- php小技巧之過濾ascii控制字符
- 淺析PHP的ASCII碼轉換類
- PHP詳解ASCII碼對照表與字符轉換
- php自動獲取字符串編碼函數(shù)mb_detect_encoding
- 解析php獲取字符串的編碼格式的方法(函數(shù))
- PHP安全的URL字符串base64編碼和解碼
- PHP 截取字符串 分別適合GB2312和UTF8編碼情況
- 淺析PHP中的字符串編碼轉換(自動識別原編碼)
- php中支持多種編碼的中文字符串截取函數(shù)!
- PHP實現(xiàn)ASCII碼與字符串相互轉換的方法
相關文章
PHP根據(jù)文章內容生成關鍵詞自動化Keywords標簽
這篇文章主要為大家介紹了PHP根據(jù)文章內容生成關鍵詞實現(xiàn)自動化Keywords標簽實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-12-12
php5.3提示Function ereg() is deprecated Error問題解決方法
這篇文章主要介紹了php5.3提示Function ereg() is deprecated Error問題解決方法,主要是由于php5.3對ereg()函數(shù)升級造成的,使用時只要對其規(guī)則和函數(shù)進行簡單的修改即可,需要的朋友可以參考下2014-11-11

