0
我期待提高以下的正则表达式,因为我现在想匹配嵌套的标签,以及:递归标签内容
'%{if:\s*"\'([^\']*)\' == \'([^\']*)\'"}((?:(?!{else}|{/endif}).)*){else}((?:(?!{/endif}).)*){/endif}%sei'
这基本上一致:
{if: "'x' == 'y'"}
a
{else}
b
{/endif}
或
{if: "'x' == 'y'"}
c
{/endif}
不过,我想这是在某种方式递归,所以嵌套状态也可以在不破坏任何内容的情况下进行匹配(如果添加了嵌套语句,此时它会中断)。
有也将是一个类似的表达与!=
。
我发现这个http://www.devnetwork.net/viewtopic.php?f=38&t=102670&sid=02b7c691a2be894336c694700f8f911a#p551340它匹配<div>
标签,虽然有点不知道该如何去适应它适合我的正则表达式...
更多的上下文请。这样做的目的是什么? – Gordon
对不起,我的一些逻辑允许一些最终用户创建一个模板,以显示一个可以自定义的区域。我不希望允许PHP,使所有被剥离出来的安全性是
如果限制嵌套一些预定的深度(这可能会或可能不会一个坏主意),你可以将它与正则表达式匹配。否则,你不能。您提供的链接与正则表达式的HTML匹配,这是经常使用的,但通常是known是一个坏主意。如果您不想使用其他形式的解析,请考虑匹配最内层的ifs,替换为某些内容并再次匹配。
来源
2012-05-22 12:10:48