ホームページ > バックエンド開発 > PHPチュートリアル > 私の PCRE パターンが PHP の Unicode 文字と一致しないのはなぜですか?

私の PCRE パターンが PHP の Unicode 文字と一致しないのはなぜですか?

Patricia Arquette
リリース: 2024-12-29 16:21:11
オリジナル
134 人が閲覧しました

Why Doesn't My PCRE Pattern Match Unicode Letters in PHP?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート