0

PHP経由でファイルの特定の部分を取得するためにRegExを使用しています!

入力例を示します。

=== KEYWORD1 ===
CONTENT

==== ANOTHERKEYWORD ====

CONTENT2

=== TESTKEYWORD ===

CONTENT3

私の ReGex は次のようになります。$pattern = "/.*=+ SEARCHTERM =+(.*?)=+.*=+.*/s";

SEARCHTERM私の正規表現の柔軟な部分です。

ここでは、私が期待するものと受け取るものについての概要を示します。

  • SEARCHTERMがKEYWORD1に置き換えられると、は期待していますが、何も得られませんCONTENT
  • SEARCHTERMがANOTHERKEYWORDに置き換えられたとき、私はそれを期待し、実際にCONTENT2取得します(したがって、このケースは機能します
  • SEARCHTERMがTESTKEYWORDに置き換えられると、期待CONTENT3ても何も得られません

したがって、重要な部分は、Searchterm の後ろに空行が存在する可能性がありますが、その必要はないということです。また、SEARCHTERM の後に他に === ANYTHING === があるかどうか、および存在しない場合にのみ、RegEx が最初に検索する必要があります。 、ファイルが終了するまですべてを読み取ります。

私は考えましたが$pattern = "/.*=+ SEARCHTERM =+(.*?)[=+.*=+.*|.*]/";、これはsyntaxErrorsをスローします。

どんな助けでも大歓迎です!

4

1 に答える 1

1

試してみてください:

$str = <<<EOD
=== KEYWORD1 ===
CONTENT

==== ANOTHERKEYWORD ====

CONTENT2

=== TESTKEYWORD ===

CONTENT3    

EOD;

foreach(array('KEYWORD1', 'ANOTHERKEYWORD', 'TESTKEYWORD') as $keyword) {
    preg_match("/.*=+ $keyword =+([^=]+)/m", $str, $m);
    echo "$keyword -> $m[1]\n";;
}

出力:

KEYWORD1 ->
CONTENT


ANOTHERKEYWORD ->

CONTENT2


TESTKEYWORD ->

CONTENT3
于 2011-02-15T12:31:52.533 に答える