文字列が UTF8 でエンコードされているかどうかを検出するための PHP の一般的な方法、utf8 エンコード
この記事の例は、文字列が UTF8 でエンコードされているかどうかを検出する PHP の一般的な方法をまとめたものです。参考のためにみんなで共有してください。具体的な実装方法は以下の通りです
文字列エンコーディングを検出するには、ord を使用して文字のベースを取得してから判定を入力するか、mb_detect_encoding 関数を使用して処理するなど、さまざまな方法があります。参考までに、以下に 4 つの一般的な方法を示します。
例1
コードをコピーします コードは次のとおりです:
/**
* 文字列が UTF8 エンコードされているかどうかを確認してください
* @param string $str 検出される文字列
* @return boolean
*/
関数 is_utf8($str){
$len = strlen($str);
for($i = 0; $i
$c = ord($str[$i]);
if ($c > 128) {
if (($c > 247)) false を返します;
elseif ($c > 239) $bytes = 4;
elseif ($c > 223) $bytes = 3;
elseif ($c > 191) $bytes = 2;
それ以外の場合は false を返します;
if (($i + $bytes) > $len) return false;
while ($bytes > 1) {
$i++;
$b = ord($str[$i]);
if ($b 191) は false を返します;
$バイト--;
}
}
}
true を返します;
}
例 2
コードをコピー コードは次のとおりです:
function is_utf8($string) {
戻り preg_match('%^(?:
[x09x0ax0dx20-x7e]
| [xC2-xDF][x80-xBF] [xC2-xDF][x80-xBF] # 非長大な 2 バイト
| [xE1-xECxEExEF][x80-xBF]{2} # ストレート 3 バイト
)*$%xs', $string);
}
精度は基本的に mb_detect_encoding() と同じであり、正解も不正解も同様です。
コーディング検出は 100% 正確であることはできませんが、これは基本的に要件を満たすことができます。
例 3
コードをコピーします
コードは次のとおりです:
function mb_is_utf8($string)
{
Return mb_detect_encoding($string, 'UTF-8') === 'UTF-8';//新しい発見
}
例 4
コードをコピーします
コードは次のとおりです:
// $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
この記事で説明した内容が皆様の PHP プログラミング設計に役立つことを願っています。
http://www.bkjia.com/PHPjc/915431.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/915431.html技術記事 PHP が文字列が UTF8 エンコードされているかどうかを検出する一般的な方法 この記事では、PHP が文字列が UTF8 エンコードされているかどうかを検出する一般的な方法を要約します。参考のためにみんなで共有してください。具体的で実践的...