我试图获取两个大括号之间的内容或Smarty标记。我想,只有Smarty的函数变量,忽略if
的等正则表达式preg_match PHP
下面是样本串标签:
{{$variable|lower}}
[亦宜]
{{$variable|escape:javascript}}
[亦宜]
{{$variable|str_replace:"search":"replace"}}
[亦宜]
{{if $test eq "test"}}
[应当NOT是垫高等教育委员会]
{{section name=foo start=10 loop=20 step=2}}
[应不匹配]
如果我这样做
preg_match_all('/{{\$?(\w+?[\W\w]*?)}}/',$str,$matches)
它得到括号内的一切。
preg_match_all('/{{\$?(\w+?\W*?\w*?)}}/',$str,$matches);
这只会得到“变量|转义”。
请帮助正确的正则表达式。
感谢
这是什么你正在努力实现?这可能比尝试重新设计已经非常糟糕的Smarty更好。 – 2012-08-07 14:29:07
@Michael我希望我能+10 – DaveRandom 2012-08-07 14:29:41
@DaveRandom我的两个最大的编程遗憾是围绕着Smarty构建的。 – 2012-08-07 14:30:49