ホームページ >バックエンド開発 >PHPチュートリアル >中国語の文字を UTF-8 正規表現と照合する方法、utf-8 正規表現_PHP チュートリアル
入力コンテンツに不正な文字が含まれているかどうかを確認するには、以下のコードを参照してください
リーリー-------------------------------------
UTF-8 一致:
JavaScript では、文字列が中国語かどうかを判断するのは非常に簡単です。
例:
コードをコピーします コードは次のとおりです:
var str = "phpプログラミング";
if (/^[u4e00-u9fa5]+$/.test(str))
{alert("文字列はすべて中国語です");
}
else{alert("この文字列はすべて中国語ではありません");
}
PHP では、x は 16 進数のデータを表すために使用されます。
コードをコピーします コードは次のとおりです:
$str = "php プログラミング";
if (preg_match("/^[x4e00-x9fa5]+$/",$str))
{
print("この文字列はすべて中国語です");
}
else { print("この文字列はすべて中国語ではありません");
}
エラーは報告されていないようで、判定結果は正しいようですが、$strを「programming」という単語に置き換えても、結果は「文字列がすべて中国語ではありません」と表示されるようです。十分に正確ではありません。
「正規表現に精通した人」を調べたところ、[x4e00-x9fa5] については自分で詳細な説明を作成したことがわかりました
PHP の正規表現では、[x4e00-x9fa5] は実際には文字と文字グループの概念です。ただし、hex は 1 ~ 2 桁または 4 桁になります。は 4 桁です。中括弧を追加する必要があります。
インターネット上では、全角文字の一致に関する通常のルールは ^[x80-xff]*^/ のみです。中括弧を追加せずに中国語と一致させることもできます [u4e00-u9fa5] が、PHP ではサポートされていません。 x は 16 進数を表すため、システムデータが js で提供される x4e00 ~ x9fa5 の範囲と異なるのはなぜですか?
コードをコピーします
コードは次のとおりです:
$str = "php プログラミング";
if (preg_match("/^[x{4e00}-x{9fa5}]+$/u",$str))
{
print("この文字列はすべて中国語です");
}
else { print("この文字列はすべて中国語ではありません");
}
PHP で UTF-8 エンコーディングで正規表現を使用して中国語の文字を照合する最終的な正しい表現はわかりました—/^[x{4e00}-x{9fa5}]+$/u を参照して、次のテスト コードを書きました。上記の記事(以下のコードをコピーして.phpファイルとして保存してください)
リーリー
GBK:
コードをコピーします
preg_match("/^[".chr(0xa1)."-".chr(0xff)."A-Za-z0-9_]+$/",$str); //GB2312 漢字英数字下線正規表現
上記の内容は、PHP で漢字を UTF-8 正規表現と一致させる方法に関するものです。気に入っていただければ幸いです。
http://www.bkjia.com/PHPjc/1042689.html
www.bkjia.com