我有这个模板文件:
<!-- BEGIN TEST -->
<!-- BEGIN TEST2 -->
<!-- BEGIN TEST3 -->
<!-- END TEST3 -->
<!-- END TEST2 -->
<!-- END TEST -->
这个正则表达式解析它:
preg_match("@<!-- BEGIN (.*?) -->(.*?)<!-- END (.*?) -->@siu", $this->code, $matches);
返回(var_dump):
array(3) {
[0]=>
string(85) "<!-- BEGIN TEST -->
<!-- BEGIN TEST2 -->
<!-- BEGIN TEST3 -->
<!-- END TEST3 -->"
[1]=>
string(4) "TEST"
[2]=>
string(5) "TEST3"
}
如何让它像这样工作:@<!-- BEGIN (.*?) -->(.*?)<!-- END %1 -->@siu
(当然这不起作用;这只是我展示问题的例子)
答案 0 :(得分:1)
我不知道你到底想要什么,也许是这样的:
$s = '<!-- BEGIN TEST --><!-- BEGIN TEST2 --><!-- BEGIN TEST3 --><!-- END TEST3 --><!-- END TEST2 --><!-- END TEST -->';
preg_match("@<!-- BEGIN (.*?) -->(.*?)<!-- END \\1 -->@siu", $s, $matches);
print_r($matches);