0

我正在使用 RegEx 通过 PHP 获取文件的特定部分!

让我向您展示一个输入示例:

=== KEYWORD1 ===
CONTENT

==== ANOTHERKEYWORD ====

CONTENT2

=== TESTKEYWORD ===

CONTENT3

我的正则表达式现在可能是:$pattern = "/.*=+ SEARCHTERM =+(.*?)=+.*=+.*/s";

SEARCHTERM是我的正则表达式的灵活部分。

这里是关于我期望得到什么以及我收到什么的概述:

  • SEARCHTERM被KEYWORD1替换时,我期望CONTENT但什么也得不到
  • SEARCHTERM被ANOTHERKEYWORD替换时,我期望CONTENT2并得到它(所以这种情况有效
  • SEARCHTERM被TESTKEYWORD替换时,我期望CONTENT3什么也得不到

所以关键的部分是,在 Searchterm 之外可以有但不必是空行,并且 RegEx 首先必须查看是否有任何其他 === ANYTHING === 在SEARCHTERM之后,并且只有在没有的情况下,阅读所有内容,直到文件结束。

我想过,$pattern = "/.*=+ SEARCHTERM =+(.*?)[=+.*=+.*|.*]/";但这会引发语法错误。

非常感谢任何帮助!

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 回答