12

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

4

7 回答 7

42

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

{$html nofilter}

于 2015-11-24T18:12:23.473 回答
11

你应该试试这个:

{$html|unescape:'html'}

另请查看手册:

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

于 2013-05-08T20:31:38.073 回答
8

你可以试试这个:

{$html|unescape: "html" nofilter}
于 2017-07-28T10:45:04.393 回答
1

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

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

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

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

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

于 2021-08-20T02:57:41.553 回答
0

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

{$html|escape:'htmlentitydecode'}
于 2015-11-19T23:02:22.790 回答
0

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

{$html|html_entity_decode}
于 2021-01-15T05:40:36.873 回答
-3

你可以试试 :

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,您可以尝试将其删除并重试。

于 2014-12-18T02:54:11.043 回答