我正在 PHP 中构建一个伪变量解析器,以允许在视图中使用简洁的语法,并为 if 语句实现了一个引擎。现在我希望能够使用嵌套的 if 语句和我想到的最简单、最优雅的解决方案是使用标识作为块的标记。
所以这基本上是我在视图中寻找的布局:
{if x is empty}
{if y is array}
Hello World
{endif}
{endif}
该脚本将找到第一个 if 语句并将其与相同深度的 endif 匹配。如果它的计算结果为真,则内部块也将被解析。
现在,我在设置正则表达式以在以下代码中使用深度时遇到问题:
preg_match_all('|([\t ]?){if (.+?) is (.+?)}(.+?){endif}|s', $template, $match);
基本上我希望在使用某种变量([\t ]?)
之前放置第一个匹配{endif}
项,并确保如果没有{endif}
与{if ...}
.
你能帮我完成吗?