我有一个类似于 Twig 的模板结构。我用正则表达式划分这个目前成功的。
{% for array as item %}
{% item.party %}
{% item %}
{% else %}
// If empty...
{% endfor %}
{% if !var %}
// Full
{% else %}
// Empty
{% endif %}
// Is var full, replace block whit var
{% block var %}
Some Code
{% endblock %}
正则表达式
preg_match_all('/(?:{% (for|if|block) )(.*?)(?: %})(.*?)({% else %}(.*?))?(?:{% end\1 %})/is', $content, $data);
现在我想那个也可以嵌套。唯一的问题是循环总是走错端。外循环采用内端,因为它是第一个。
{% for array as item %} // From here on
{% item.title %}
{% for item.sub as sub %}
{% sub.title %}
{% endfor %} // To here
{% endfor %}
你知道我如何让正则表达式选择正确的结尾吗?在第一层的内容上,我还可以重新应用整个功能。但它必须是正则表达式才能使用正确的结尾。