上記のコードを実行すると、次のメッセージが表示されます。 警告: preg_match(): コンパイルに失敗しました: PCRE は、F:wwwrootphptest.php の 2 行目のオフセット 3 で L、l、N、P、p、U、u、または X をサポートしていません その理由は、次の Perl エスケープ シーケンスが PHP 正規表現でサポートされていないためです: L、l、N、P、p、U、u、または X UTF-8 モードでは、「x{...}」が許可され、中括弧内の内容は 16 進数を表す文字列です。 元の 16 進エスケープ シーケンス xhh は、値が 127 より大きい場合、2 バイトの UTF-8 文字と一致します。 解決:
内部コードの漢字と一致 彼が提供したようにテストしてください:
この操作はまだ正しいです。中国人かどうかは異常だ。しかし、xで表現される16進数のデータなのに、jsで用意されているx4e00~x9fa5の範囲と違うのはなぜでしょうか? したがって、コードは次のように変更されました。
警告が再度生成されます。 警告: preg_match() [function.preg-match]: コンパイルに失敗しました: test.php の 3 行目のオフセット 6 に無効な UTF-8 文字列があります 次に、これを変更して、「4e00」と「9fa5」をそれぞれ「{」と「}」で囲み、再度実行したところ、今度は正確であることがわかりました。
php の utf は知っています。 -8 エンコーディングで正規表現を使用して中国語の文字を照合するための正しい表現: /^[x{4e00}-x{9fa5}]+$/u, 実装コードの最終バージョン:
例 2、
1. GBK (GB2312/GB18030) x00-xff GBK 2 バイトエンコード範囲 x20-x7f アスキー xa1-xff 中国語 gb2312 x80-xff 中国語 GBK 2. UTF-8 (ユニコード)u4e00-u9fa5 (中国語) x3130-x318F (韓国語) xAC00-xD7A3 (韓国語) u0800-u4e00 (日本語) これらを紹介しましょう。PHP で中国語を正規にマッチングする方法を皆さんが理解するのに役立つことを願っています。 Programmer's Home の皆様の学習と進歩がますますご発展されることをお祈りしております。 |