使用preg_match解析模板

时间:2012-07-12 18:28:37

标签: php regex

我有这个模板文件:

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

1 个答案:

答案 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);