寻找带有嵌套的PHP模板解析器

寻找带有嵌套的PHP模板解析器,php,regex,parsing,templates,Php,Regex,Parsing,Templates,我正在寻找一个PHP解析器,可以做到这一点 {tag} Replace the tag with text coming from a function {tag(params)} It must support params {tag({tag(params)},{tag(params)})} It must support nesting {tag()? else } It must support Tests {$tag=value} It must support varri

我正在寻找一个PHP解析器,可以做到这一点

{tag} Replace the tag with text coming from a function

{tag(params)} It must support params

{tag({tag(params)},{tag(params)})} It must support nesting

{tag()?

else

} It must support Tests

{$tag=value} It must support varriables
有人知道一个解析器可以做到这一点吗

或者你知道我如何创造一个。我曾尝试用preg来实现这一点,但似乎不可能创建嵌套

Smarty似乎有点太大了,我不知道你是否可以禁用它所有的额外功能。我只需要上面列出的功能

在smarty中,您可以编写PHP代码,我不喜欢这样。{php}{/php} 所以,如果我要使用它,我需要能够把它


我将在CodeIgniter中使用它。

要将嵌套合并到正则表达式中,必须使用递归模式(?R)。这符合整个模式

要查找文本中最外层的{}-s(可能还有其他一些{}-s在其中),您应该使用如下表达式:

/{([^{}]*(?R))*[^{}]+}/

你可以在这里阅读(?R):


这里建议了一个构造
{((?>[^{}]+)|(?R))*}
。也许比我建造的更高效。

我会选择Smarty3。既然有人已经为你做了多年的开发、测试和优化,为什么还要重新发明轮子呢


在Smarty3
{php}
中,默认情况下禁用标记。它还支持在允许用户修改模板的情况下禁用php函数调用等功能

CodeIgniter在引入内置模板之前做得非常好。CodeIgniter视图模板过去只是用PHP编写的,因此您可以自由使用任何PHP功能:调用结构、函数调用等等

我建议您只需使用,而不要使用