首頁  >  文章  >  後端開發  >  php下偵測字串是否是utf8編碼的功能

php下偵測字串是否是utf8編碼的功能

怪我咯
怪我咯原創
2017-07-09 09:26:151913瀏覽

給一個字串,怎麼判斷它是什麼編碼呢? php有一個函數: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%準確,這個東西已經可以基本滿足要求了。 

#

以上是php下偵測字串是否是utf8編碼的功能的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn