【问题标题】:show a smarty variable with html content显示带有 html 内容的 smarty 变量
【发布时间】:2013-05-03 05:01:21
【问题描述】:

我有一个 smarty 变量,其中包含 html 内容,例如: $html="<strong>Content</strong><br/>etc etc" . 我尝试以 html 格式显示它。当显示它像 {$html} 只有纯文本出现,没有格式化。我尝试喜欢: {$html|unescape} 但随后标签显示但未应用。你有什么建议吗?

【问题讨论】:

    标签: html smarty


    【解决方案1】:

    你应该试试这个:

    {$html|unescape:'html'}
    

    同时查看手册:

    http://www.smarty.net/docs/en/language.modifier.unescape.tpl

    【讨论】:

    • 知道如何在不存在 unescape 的 smarty 2.x 上做同样的事情吗?
    【解决方案2】:

    你可以试试:

    php函数符号:

    function html($str) {
        $arr = array(
            "&lt;"      => "<",
            "&gt;"      => ">",
            "&quot;"    => '"',
            "&amp;"     => "&",
            "&#92;"     => chr(92),
            "&#39"      => chr(39),
            "&#039;"    => chr(39)
        );
        return nl2br(strtr($str,$arr));
    }
    

    在 smarty 模板调用中:

    {html({$html})}
    

    或者没有php函数只有smarty:

    {$html|unescape:'allhtml'}
    

    注意:如果在 tpl 中有使用reset css,您可以尝试将其删除并重试。

    【讨论】:

      【解决方案3】:

      某些版本的 smarty unescape 不可用。如果是这种情况,请尝试使用escape:'htmlentitydecode'

      {$html|escape:'htmlentitydecode'}
      

      【讨论】:

        【解决方案4】:

        有趣的是,这里的答案都不适用于 CS-Cart 4.3.4 上的 Smarty 3.1.21。所以,只是为了在这种情况下添加另一个想法,在$html 字符串上使用nofilter,如下所示:

        {$html nofilter}

        【讨论】:

        • 我爱你,我在 cs-cart 4.4.3 在获取 RSS 提要和显示帖子描述期间寻找相同的解决方案来解决相同的问题。
        • 哇,非常感谢,事实证明这是在 Prestashop 1.7 中使用的推荐过滤器!
        • 我正在寻找这个问题的解决方案很长一段时间,它的工作原理............
        【解决方案5】:

        你可以试试这个:

        {$html|unescape: "html" nofilter}
        

        【讨论】:

        • 添加一些解释,说明此答案如何帮助 OP 解决当前问题
        【解决方案6】:

        使用Smarty 2.x的用户,unescape方法不可用,可以试试这个;

        {$html|html_entity_decode}
        

        【讨论】:

          【解决方案7】:

          使用{$html|unescape: "html" nofilter}

          基于 Sim1-81 和 ρяσѕρєя K 的answer。我想解释一下为什么下面的代码有效。

          unescape:"html" 修饰符有助于保留特殊字符。例如,“€”。 (Docs)。

          "nofilter" 标志禁用 $escape_html,这实际上禁用了被 htmlspecialchars() (Docs) 包装的变量。

          他们的解决方案很有帮助,因为我的情况是显示从变量传入的模板化 HTML 块。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-11-22
            • 1970-01-01
            • 2017-01-30
            • 1970-01-01
            相关资源
            最近更新 更多