ホームページ >バックエンド開発 >PHPチュートリアル >パターン修飾子_PHP チュートリアル
PCRE で現在利用可能な修飾子は以下にリストされています。括弧内はこれらの修飾子の内部 PCRE 名です。
- i (PCRE_CASELESS)
この修飾子が設定されている場合、パターン内の文字は大文字と小文字の両方に一致します。
- m (PCRE_MULTILINE)
デフォルトでは、PCRE はターゲット文字列を (改行が含まれている場合でも) 単一の文字「行」として扱います。 「行頭」メタキャラクタ (^) は文字列の先頭にのみ一致し、「行末」メタキャラクタ ($) は文字列の末尾、または改行の場合はその前の最後の文字にのみ一致します (改行でない場合)。 が設定されています) D 修飾子)。これはPerlと同じです。
この修飾子が設定されている場合、「行の開始」と「行の終了」は文字列全体の先頭と末尾に一致するだけでなく、それぞれ文字列内の改行文字の前後にも一致します。これは Perl の /m 修飾子に相当します。ターゲット文字列に「n」文字がない場合、またはパターンに ^ または $ がない場合、この修飾子を設定しても効果はありません。
- s (PCRE_DOTALL)
この修飾子が設定されている場合、パターン内のドット メタ文字 (.) は改行を含むすべての文字と一致します。この設定を行わないと、改行文字は含まれません。これは Perl の /s 修飾子に相当します。 [^a] などの除外文字クラスは、この修飾子が設定されているかどうかに関係なく、常に改行と一致します。
- x (PCRE_EXTENDED)
この修飾子が設定されている場合、パターン内の空白文字は、エスケープされた文字クラスまたは文字クラス内の文字を除き、完全に無視されます。 # とエスケープされていない文字クラスの外側の文字と次の改行の間の文字は、両端を含めてすべて無視されます。も無視されました。これは Perl の /x 修飾子に相当し、複雑なパターンにコメントを追加できます。ただし、これはデータ文字にのみ適用されることに注意してください。空白文字は、条件付きサブパターン (中央に?() を導入するシーケンスなど、パターン内の特殊文字シーケンスには決して出現できません。
- え
- この修飾子が設定されている場合、
preg_replace() は置換文字列内の後方参照の通常の置換を実行し、それを PHP コードとして評価し、その結果を使用して検索文字列を置換します。
preg_replace() のみがこの修飾子を使用し、他の PCRE 関数はそれを無視します。
注: この修飾子は PHP3 では使用できません。
例: すべての HTML タグを大文字に変更します
preg_replace ("/(?)(w+)([^>]*>)/e","'\1'.strtoupper('\2').'\3'",$html_body) ;
ただし、この処理は preg_replace_callback メソッドより 20 倍遅いと報告している人もいます- A (PCRE_ANCHORED)
この修飾子が設定されている場合、パターンは強制的に「アンカー」されます。つまり、ターゲット文字列の先頭からのみ一致するように強制されます。この効果は、適切なモード自体を使用して実現することもできます (Perl でこれを行う唯一の方法)。
- D (PCRE_DOLLAR_ENDONLY)
この修飾子が設定されている場合、パターン内のドルのメタ文字はターゲット文字列の末尾にのみ一致します。このオプションを使用しない場合、最後の文字が改行文字の場合、ドル記号はこの文字の前でも一致します (ただし、他の改行文字の前では一致しません)。 m 修飾子が設定されている場合、このオプションは無視されます。 Perl には同等の修飾子はありません。
- S
パターンが複数回使用される場合は、マッチングを高速化するために最初に分析する価値があります。この修飾子が設定されている場合、追加の分析が実行されます。現在、パターンの分析は、単一の固定開始文字を持たない非アンカー パターンにのみ役立ちます。
- U (PCRE_UNGREEDY)
この修飾子は、デフォルトでは繰り返されないように一致数の値を反転しますが、後に「?」が続くと繰り返されるようになります。これは Perl と互換性がありません。このオプションは、モードで (?U) 修飾子を設定することによっても有効にすることができます。
- X (PCRE_EXTRA)
この修飾子は、Perl と互換性のない PCRE の追加機能を有効にします。パターン内のバックスラッシュの後に特別な意味のない文字が続くとエラーが発生するため、この組み合わせは将来の拡張のために保存されます。デフォルトでは、Perl と同様に、バックスラッシュの後に特別な意味を持たない文字が続くと、その文字自体として扱われます。現在、この修飾子によって制御される他の特性はありません。
- u (PCRE_UTF8)
この修飾子は、Perl と互換性のない PCRE の追加機能を有効にします。パターン文字列は UTF-8 として扱われます。この修飾子は、Unix では PHP 4.1.0 以降、win32 では PHP 4.2.3 以降で使用できます。
例:
preg_match('/[x{2460}-x{2468}]/u', $str); 内部コード化された中国語文字と一致します