程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP判斷字符串編碼是否為utf-8的程序代碼

PHP判斷字符串編碼是否為utf-8的程序代碼

編輯:關於PHP編程

本文章來給各位同學介紹一下關於PHP判斷字符串編碼是否為utf-8的程序代碼,如果你有興趣不防進入參考。

我們以前常用mb_detect_encoding()此函數檢測字符編碼

 

 代碼如下 復制代碼 //判斷字符串是什麼編碼
if ($tag === mb_convert_encoding(mb_convert_encoding($tag, "GB2312", "UTF-8"), "UTF-8", "GB2312")) {
}
else {//如果是gb2312 的就轉換為utf8的
$tag = mb_convert_encoding($tag, 'UTF-8', 'GB2312');
}

 $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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved