2

我有一个带有 php smarty 标签的 html 页面。问题是{literal}标签,需要转义 javascript 和 css 代码块。在许多其他 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>

当我有相同的项目在其他 php 版本中正常工作并且当我有很多页面转义 javascript 和 css 时,我不认为{literal}将项目中的所有标签更改为{ldelim}{rdelim}{literal}

4

1 回答 1

1

运行此 PHP 版本时,此 Smarty 版本中似乎存在错误。我建议您使用最新的 3.x Smarty,如果不能,您应该测试最新的 Smarty 2.6.28 以检​​查此错误是否已删除,然后决定是否迁移到此 Smarty 版本。

于 2014-05-15T22:07:31.703 回答