我正在使用RegEx通过PHP获取文件的特定部分!
让我向您展示一个输入示例:
=== KEYWORD1 ===
CONTENT
==== ANOTHERKEYWORD ====
CONTENT2
=== TESTKEYWORD ===
CONTENT3
我的ReGex现在可能是:$pattern = "/.*=+ SEARCHTERM =+(.*?)=+.*=+.*/s";
SEARCHTERM
是我的正则表达式的灵活部分。
这里概述了我期望获得的和我收到的内容:
CONTENT
但却什么也得不到CONTENT2
并确实得到它(所以这个案例有效CONTENT3
并且什么也得不到所以关键部分是可以但不必超出Searchterm AND 的空行,RegEx首先必须查看是否存在任何其他=== ANYTHING ===在SEARCHTERM之后,只有在没有的情况下,阅读所有文件,直到文件结束。
我想到了$pattern = "/.*=+ SEARCHTERM =+(.*?)[=+.*=+.*|.*]/";
但是这会抛出syntaxErrors。
非常感谢任何帮助!
答案 0 :(得分: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