-1

我有这个模板文件:

<!-- 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当然这不起作用;这只是我展示问题的例子)

4

1 回答 1

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);
于 2012-07-12T18:39:04.277 回答