本文章來給各位同學介紹一下關於PHP判斷字符串編碼是否為utf-8的程序代碼,如果你有興趣不防進入參考。
我們以前常用mb_detect_encoding()此函數檢測字符編碼
代碼如下 復制代碼 //判斷字符串是什麼編碼
$keytitle = “%D0%BE%C6%AC”;時。檢測結果卻是UTF-8.這個bug其實不算是bug,寫程序時也不應當過於依賴mb_detect_encoding,當字符串較短時,檢測結果產生偏差的可能性很大。
怎麼解決呢,我的辦法是:
$encode = mb_detect_encoding($keytitle, array('ASCII','GB2312′,'GBK','UTF-8');
個參數分別是:被檢測的輸入變量、編碼方式的檢測順序(一旦為真,後面自動忽略)、strict模式
對編碼檢測的順序進行調整,將最大可能性放在前面,這樣減少被錯誤轉換的機會。
上面辦法還是解決不了,下面又找到了一個解決方法。
例1
代碼如下 復制代碼// Returns true if $string is valid UTF-8 and false otherwise.
function is_utf8($word)
{
if (preg_match("/^([".chr(228)."-".chr(233)."]{1}[".chr(128)."-".chr(191)."]{1}[".chr(128)."-".chr(191)."]{1}){1}/",$word) == true || preg_match("/([".chr(228)."-".chr(233)."]{1}[".chr(128)."-".chr(191)."]{1}[".chr(128)."-".chr(191)."]{1}){1}$/",$word) == true || preg_match("/([".chr(228)."-".chr(233)."]{1}[".chr(128)."-".chr(191)."]{1}[".chr(128)."-".chr(191)."]{1}){2,}/",$word) == true)
{
return true;
}
else
{
return false;
}
} // function is_utf8