ホームページ  >  記事  >  バックエンド開発  >  文字列エンコーディングが utf-8 であるかどうかを判断する PHP プログラム コード_PHP チュートリアル

文字列エンコーディングが utf-8 であるかどうかを判断する PHP プログラム コード_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:48:501161ブラウズ

この記事では、文字列エンコーディングが utf-8 であるかどうかを判断するための PHP のプログラム コードを紹介します。興味がある場合は、参照のために自由に入力してください。

文字エンコーディングを検出するために 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 です。このバグは実際にはバグではありません。プログラムを作成する際に mb_detect_encoding に依存しすぎると、文字列が短い場合に検出結果が偏る可能性があります。
それを解決する方法は次のとおりです:

コードは次のとおりです コードをコピー

$encode = mb_detect_encoding($keytitle, array('ASCII','GB2312','GBK','UTF-8');

パラメータは、検出される入力変数、エンコード方法の検出順序 (一度 true になると、後で自動的に無視されます)、および厳密モード
です。 最も大きな可能性が最初に配置されるようにエンコード検出の順序を調整すると、誤った変換の可能性が減ります。

上記の方法でも解決できないので、以下の別の解決策を見つけました。

例1

コードは次のとおりです コードをコピー

// $string が有効な UTF-8 の場合は true を返し、それ以外の場合は false を返します。 関数 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)
{
true を返します。 }
それ以外は
{
false を返します。 }
} // 関数 is_utf8


http://www.bkjia.com/PHPjc/632765.html

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/632765.html技術記事この記事では、文字列エンコーディングが utf-8 であるかどうかを判断するための PHP のプログラム コードを紹介します。興味がある場合は、参考として入力してください。 以前は mb_detect_encoding() この関数を使用していました...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。