如何将{@if condtwo}
的内容提供给匹配的{!if}
?
{@if condtwo}
{@if condone}
show this if condone is true
{!if}
other contents
{!if} <- matching {!if}
我尝试使用preg_match_all
。这是我的正则表达式:
/([\s]*?{@IF(.*?)}[\s]*?)(.+?)([\s]*?{!$IF}[\s]*?)/si
问题是它只能获取{@if condtwo}
到下一个{!if}
的所有内容:
{@if condtwo}
{@if condone}
this is a table
{!if}
答案 0 :(得分:1)
好吧,我知道我说不要使用正则表达式,但是...我说谎了。这样做,它也可能是最好的方法。
/{@if(.+?)}(((?>[^{}]+)|(?R))*){!if}/si
Here's a working demo.您可能还想查看the documentation for recursive regular expressions。