ホームページ  >  記事  >  バックエンド開発  >  UTF-8 漢字正規表現

UTF-8 漢字正規表現

WBOY
WBOYオリジナル
2016-08-08 09:19:13982ブラウズ

元のリンク: http://blog.csdn.net/wide288/article/details/30066639

$str = "プログラミング";
// if(!preg_match("/^[x{4e00}-x{9fa5 }A-Za-z0-9_]+$/u",$str)) //UTF-8 漢字英数字下線正規表現
if(!preg_match("/^[x{4e00}-x{9fa5} ] +$/u",$str)) //UTF-8 漢字英数字下線正規表現
{ ;/font>"; }
else
{
echo "The [".$ str."] 入力した内容は完全に正当であり、合格しました!" -----------------------

UTF-8 一致:

; JavaScript では、文字列が中国語かどうかを判断するのは非常に簡単です。例: var str = "phpプログラミング"; if (/^[u4e00-u9fa5]+$/.test(str)) {alert("この文字列はすべて中国語です") } else{すべてが中国語であるわけではありません"); }

php では、x は 16 進データを表すために使用されます。したがって、次のコードに変換されます: $str = "php programming"; if (preg_match("/^[x4e00-x9fa5]+$/",$str)) { print("この文字列はすべて中国語です" ); } else { print("文字列の一部が中国語ではありません"); どうやら $str を "programming" という単語に置き換えると、エラーは報告されなくなったようです。 、結果はまだ「文字列のすべてが中国語ではありません。中国語です。」と表示されますが、この判断はまだ十分正確ではないようです。

重要: 「正規表現に精通している」をチェックした後、[x4e00-x9fa5] については自分で説明を強化したことがわかりました

PHP の正規表現では、[x4e00-x9fa5] は実際には文字と文字グループの組み合わせです。 , x{hex} は 16 進数を表します。hex は 1 ~ 2 桁または 4 桁にすることができますが、4 桁の場合は波括弧を追加する必要があります。 x{FF} より大きい 16 進数であり、 u 修飾子と一緒に使用する必要があります。そうしないと、不正なエラーが発生します

全角文字を一致させるための通常のルールは、インターネット上でのみ見つかります: ^[x80-xff]*^/ 。ここに中括弧を追加することはできません [u4e00- u9fa5] は中国語に一致しますが、PHP ではサポートされていません。ただし、x で表される 16 進数データが​​、js で提供される x4e00-x9fa5 の範囲と異なるのはなぜですか?そこで、以下のコードに変更したところ、それが非常に正確であることがわかりました。 $str = "php programming" 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 漢字英数字下線正規表現

上記では、UTF-8 の漢字正規表現をその側面も含めて紹介しましたが、PHP チュートリアルに興味のある友人に役立つことを願っています。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。