我在PHP中使用preg_ *来搜索模式<!-- %{data=THIS GETS MATCHED}% -->
并提取匹配的文本。
这种模式是:
preg_match('#<!-- %{' . $knownString . '\s*=\s*(.*?)}% -->#', ...)
我希望它能够在多行中搜索字符串。例如:
<!-- %{data=
THIS GETS
MATCHED AND
RETURNED
}% -->
如何编辑当前模式以获得此搜索功能?
答案 0 :(得分:6)
你应该添加“s”pattern modifier,如果没有它匹配任何字符除了换行:
preg_match('#<!-- %{' . $knownString . '\s*=\s*(.*?)}% -->#s', ...)
答案 1 :(得分:1)
preg_match('#<!-- %{' . $knownString . '\s*=\s*(.*?)}% -->#s', ...)
是否有效?
我在工作时没有PHP,所以我无法测试它......
答案 2 :(得分:1)
这似乎有效:
<?php
$testString = "<!-- %{data=
THIS GETS
MATCHED AND
RETURNED
}% -->";
$knownString = "data";
preg_match( "@<!-- %\\{" . $knownString . "\\s*=\\s*([^\\}]+)\\}% -->@", $testString, $match );
var_dump( $match );
?>
返回:
array(2) {
[0]=>
string(54) "<!-- %{data=
THIS GETS
MATCHED AND
RETURNED
}% -->"
[1]=>
string(34) "THIS GETS
MATCHED AND
RETURNED
"
}