2012-07-12 42 views
-1

分析模板我有這個模板文件:用的preg_match

<!-- 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

你必須解釋這是什麼你希望得到替代。 – 2012-07-12 18:41:45

+0

看看Piotr Olaszewski的回答。 – djmati11 2012-07-12 18:43:07

+0

Piotr也提到他不知道你到底是什麼。在尋求幫助的時候,明白這一點並不難,你不同意嗎? – 2012-07-12 18:47:05

回答

1

我不知道你想exacly recive,也許是這樣的:

$s = '<!-- BEGIN TEST --><!-- BEGIN TEST2 --><!-- BEGIN TEST3 --><!-- END TEST3 --><!-- END TEST2 --><!-- END TEST -->'; 

preg_match("@<!-- BEGIN (.*?) -->(.*?)<!-- END \\1 -->@siu", $s, $matches); 

print_r($matches); 
+0

謝謝/dzięki。 – djmati11 2012-07-12 18:44:05