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

私の PHP 正規表現が Unicode 文字と一致しないのはなぜですか?

DDD
DDDオリジナル
2024-12-18 16:43:11789ブラウズ

Why Doesn't My PHP Regex Match Unicode Letters?

PCRE/PHP における Unicode 文字のマッチング: 改訂された理解

柔軟な名前検証ツールを開発する試みとして、PHP パターンがUnicode 文字、アポストロフィ、ハイフン、およびスペース:

$namePattern = "/^([\p{L}'\- ])+$/";

ただし、このパターンでは、Ă や 张などの非 ASCII 文字が発生した場合に問題が発生します。これを修正するには、次の洞察を考慮する必要があります:

1. Unicode 修飾子: 主な問題は、PCRE/PHP で Unicode サポートを有効にするために不可欠な u 修飾子が存在しないことです。この修飾子がないと、Unicode 文字プロパティは使用できなくなります。

2.修正されたパターン: u 修飾子を含む修正されたパターンは次のとおりです:

$namePattern = '/^[-\' \p{L}]+$/u';

これらの変更を組み込むことにより、パターンは Unicode 文字と効果的に一致し、より広範囲の文字との互換性が確保されます。入力。

以上が私の PHP 正規表現が Unicode 文字と一致しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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