以下のエディターは、PHP 正規表現の i、m、s、x、e がそれぞれ何を表すかについての決まり文句を提供します。編集者はこれがとても良いと思ったので、参考として共有します。エディターで見てみましょう
i
この修飾子が設定されている場合、パターン内の文字は大文字と小文字の両方に一致します。
m
この修飾子が設定されている場合、「行頭」と「行末」は文字列全体の先頭と末尾に一致するだけでなく、改行文字の前後にも一致します。
s
この修飾子が設定されている場合、パターン内のドット メタ文字 (.) は改行を含むすべての文字と一致します。この設定を行わないと、改行文字は含まれません。
x #およびエスケープされていない文字クラス外の次の文字 改行文字間のすべての文字、両端も含めて無視されます。
? の後の置換文字列内の後方参照の通常の置換を実行します。非貪欲マッチング: *、+ 修飾子と ? は両方とも貪欲です。可能な限り多くのリテラルと一致するようにするには、後ろに ? を追加する必要があります。 例:
<?php $string = "上飞机离开我<img border='0' alt='' src='/uploadfile/2009/0921/20090921091612567.jpg' border='0' />sdfsdf"; $su = preg_match("/ \<[ ]*img.*src[ ]*\=[ ]*[\"|\'](.+?)[\"|\'] /", $string,$match); // 匹配src=的内容 print_r($match[1]); // 输出 /uploadfile/2009/0921/20090921091612567.jpg $su = preg_match("/ \<[ ]*img.*src[ ]*\=[ ]*[\"|\'](.+)[\"|\'] /", $string,$match); print_r($match[1]); // 输出 /uploadfile/2009/0921/20090921091612567.jpg' border=' ?>
(?i) PHP では内部修飾子を意味し、i は大文字と小文字を区別しないことを意味します
その他の修飾子には、x、m、 s、Uなどこれは私たちが使用したのと同じパターン修飾子です。
違いは、パターンの内部で使用されることです。 (?i) が配置されているサブパターン (
ccc(a(?i))bcd 匹配 cccabcd和cccAbcd
など) にのみ作用し、(?i) はパターン全体に作用するため、a(?i)bc は abc プラス i 修飾子と同じです
後方参照正規表現パターンまたはパターンの一部を括弧で囲むと、キャプチャされた各部分一致が、正規表現パターンの左から右に次のように格納されます。保存されています。部分一致が格納されるバッファには、1 から始まり、最大 99 個の部分式まで連続した番号が付けられます。各バッファーには、「n」を使用してアクセスできます。n は、特定のバッファーを識別する 1 桁または 2 桁の 10 進数です。
非キャプチャメタ文字「?:」、「?=」、または「?!」を使用して、関連する一致の保存を無視できます。
上記は、PHP 正規表現の i、m、s、x、および e が何を表すかについて簡単に説明したものです。詳細については、PHP 中国語 Web サイト (www.php.cn) を参照してください。