我有一个带有php smarty标签的html页面。
问题是转义javascript和css代码块所需的{literal}
标记。
在许多其他PHP版本,如PHP 5.3或5.5工作正常,但在PHP 5.4.9不工作
当我使用{literal}
转义javascript时,如下所示:
<script type="text/javascript">
{literal}
$(function () {
jQuery.support.placeholder = false;
test = document.createElement('input');
if('placeholder' in test) jQuery.support.placeholder = true;
if (!$.support.placeholder) {
$('.field').find ('label').show ();
}
});
{/literal}
</script>
我得到"Fatal error: Smarty error: [in login.html line 70]: syntax error: unrecognized tag: php' . str_repeat(" ", substr_count('{literal (Smarty_Compiler.class.php, line 446) in /var/www/library/smarty/Smarty.class.php on line 1095"
,第70行是代码{literal}
。
但是,如果我删除{literal}
代码并使用{ldelim}
和{rdelim}
,则可以正常使用,例如:
<script type="text/javascript">
$(function () {ldelim}
jQuery.support.placeholder = false;
test = document.createElement('input');
if('placeholder' in test) jQuery.support.placeholder = true;
if (!$.support.placeholder) {ldelim}
$('.field').find ('label').show ();
{rdelim}
{rdelim});
</script>
我不认为解决方案会更改项目{literal}
和{ldelim}
中的所有标记{rdelim}
,当我在其他php版本中使用相同的项目时工作正常很多网页使用{literal}
转义javascript&#39; s和css。
答案 0 :(得分:1)
在运行此PHP版本时,似乎这个Smarty版本中存在一个错误。我建议你使用最新的3.x Smarty,如果你不能,你应该测试最后一个Smarty 2.6.28来检查这个bug是否被删除然后决定是否转移到这个Smarty vesion。