为什么Smarty会替换'%&gt;'之类的东西与<! - ?php echo'% - >'; ?&GT;以及如何避免这种情况?

时间:2011-03-03 15:41:55

标签: php smarty

我正在优化Smarty模板,事情看起来不错,但唯一剩下的就是生成的缓存模板中充斥着像<?php echo '%>'; ?>这样的东西,它应该只有'%>'

它对'?>'也是如此,但这是可以理解的,因为它会混淆PHP,'%>'会产生同样的效果吗?

2 个答案:

答案 0 :(得分:1)

查看asp-tags ini setting:

  

asp_tags boolean

     

允许使用类似ASP的&lt; %%&gt;标签以及通常的标签。这包括变量&gt;值打印速记&lt;%= $ value%&gt;。有关更多信息,请参阅从HTML转义。

在较新的php版本中,默认情况下这是关闭的,所以如果smarty改变那些我不会感到惊讶。 (如果我理解正确的话)

答案 1 :(得分:1)

正如您所指出的,对于更传统的结束标记?>,它也是如此。

嗯,%>也是一个PHP结束标记,虽然默认情况下禁用了一个。您可以使用asp-tags激活它:

  

允许使用类似ASP的&lt; %%&gt;标签   除了通常的标签。这个   包括变量 - &gt;价值印刷   简写&lt;%= $ value%&gt;。更多   信息,请参阅从HTML中转义。

Smarty刚刚彻底。不幸的是,它并没有做得很好。确保禁用此功能,您的问题应该消失。