目前我的实际匹配线是
preg_match_all('/(\{%IF:(.+?)%\}\r?\n?)(.+?)(\{%ENDIF:\2%\}\r?\n?)/s',$this->tpl_raw,$if_controls,PREG_SET_ORDER);
寻找
{%IF:NAME%}Do 1{%ENDIF:NAME%}
我得到那场比赛。问题是,它没有做什么,我希望在这样的情况下
{%IF:NAME%}Do 1{%IF:OTHERNAME%} Do 2{%ENDIF:OTHERNAME%}{%ENDIF:NAME%}
我无法让它与内部相匹配。
根据这里的原始答案,我调查了这个
preg_match_all('/(\{%IF:(.+?)%\}\r?\n?)(.+?)|(?R)(\{%ENDIF:\2%\})\r?\n?/s',$this->tpl_working,$if_controls,PREG_SET_ORDER);
但那给了我
preg_match_all(): Compilation failed: recursive call could loop indefinitely at offset 31
任何人都可以协助我完成这项工作吗?