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);
}
準(zhǔn)確率基本和mb_detect_encoding一樣,要對一起對,要錯一起錯。
編碼檢測不可能100%準(zhǔn)確,這個東西已經(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);
}
準(zhǔn)確率基本和mb_detect_encoding一樣,要對一起對,要錯一起錯。
編碼檢測不可能100%準(zhǔn)確,這個東西已經(jīng)可以基本滿足要求了。
您可能感興趣的文章:
- php實現(xiàn)HTML實體編號與非ASCII字符串相互轉(zhuǎn)換類實例
- php實現(xiàn)圖片轉(zhuǎn)換成ASCII碼的方法
- php小技巧之過濾ascii控制字符
- 淺析PHP的ASCII碼轉(zhuǎn)換類
- PHP詳解ASCII碼對照表與字符轉(zhuǎn)換
- php自動獲取字符串編碼函數(shù)mb_detect_encoding
- 解析php獲取字符串的編碼格式的方法(函數(shù))
- PHP安全的URL字符串base64編碼和解碼
- PHP 截取字符串 分別適合GB2312和UTF8編碼情況
- 淺析PHP中的字符串編碼轉(zhuǎn)換(自動識別原編碼)
- php中支持多種編碼的中文字符串截取函數(shù)!
- PHP實現(xiàn)ASCII碼與字符串相互轉(zhuǎn)換的方法
相關(guān)文章
解決PHP在DOS命令行下卻無法鏈接MySQL的技術(shù)筆記
前段時間,由于要用 php 進行 Shell 編程時,碰到了 PHP 在 WEB 下可以連接 MySQL 而在 DOS COMMAND 命令行下卻連接失敗的問題。2010-12-12php強大的時間轉(zhuǎn)換函數(shù)strtotime
在php中strtotime() 函數(shù)將任何英文文本的日期時間描述解析為 Unix 時間戳,這個函數(shù)也是我們經(jīng)常會用到的,有需要的朋友參考一下2016-02-02/etc/php-fpm.d/www.conf 配置注意事項
下面小編就為大家?guī)硪黄?etc/php-fpm.d/www.conf 配置注意事項。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-02-02