我正在玩试图制作一个小模板类,我遇到了一点麻烦 我正在尝试匹配这个嵌套循环
<ul>
{each $nestedArr}
<li>{$group}</li>
<ul>
{each $users}
<li>{$name}</li>
{/each}
</ul>
{/each}
</ul>
到目前为止我得到的是
preg_match('/{each \$nestedArr}(?:(?R)|(.*?)){\/each}/is', $this->buffer, $match);
但问题是它会在第一次关闭时停止{/ each} 关于我如何解决这个问题的任何提示?
为了获得认可,我还添加了regex101
答案 0 :(得分:1)
如果您对如何使用正则表达式感兴趣,请继续阅读,但正如评论中所述,您最好在生产中使用一些经过良好测试的组件(可能使用更好的方法来解析代码)
要匹配嵌套的{each $...}
代码could use this:
/{each\ \$\w+} (?: [^{] | {(?!\/?each) | (?R) )* {\/each}/x
但这与您似乎想要的特定标签不匹配。
要做到could use:
/(?={each\ \$nestedArr}) ({each\ \$\w+} (?: [^{] | {(?!\/?each) | (?1) )* {\/each})/x