PCRE/PHP での Unicode 文字一致の難題のデコード
開発者は、PHP で PCRE を使用して、特に非 ASCII で名前を検証する際に困難に遭遇しました。 「Ă」や「张」などの文字。最初のパターン「/^([p{L}'- ]) $/」はこれらの文字をキャプチャできなかったため、パターンまたは入力処理のいずれかが原因である可能性があるとの疑いが生じました。
問題を明確にして、パターンを調べてみましょう。 p{L} は、Unicode 文字の Unicode 文字プロパティの短縮形です。ただし、正しく機能するには UTF-8 モードが必要です。デフォルトでは、PHP は大文字と小文字を区別する非 Unicode モードで動作します。
結局のところ、開発者はパターン内で「u」修飾子の指定を怠っていました。この修飾子により Unicode サポートが有効になり、p{L} などの文字プロパティが意図したとおりに動作できるようになります。
問題を解決するには、パターンを更新します。
$namePattern = '/^[-\' \p{L}]+$/u';
「u」修飾子を追加することで、 、パターンは非 ASCII アルファベットを含む Unicode 文字と正確に一致するようになり、Ă や Ă などの文字を含む名前の検証が確実に成功するようになりました。张。
以上が私の PCRE パターンが PHP の Unicode 文字と一致しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。