代码之家  ›  专栏  ›  技术社区  ›  Jack marksy

将HTML代码格式化为纯文本格式,并使用php[重复]

  •  0
  • Jack marksy  · 技术社区  · 15 年前

    这个问题已经有了答案:

    我有一个从数据库获取用户提交的HTML代码的函数:

    function Code($code)
    {
        return "<pre><code>".nl2br(htmlspecialchars($code))."</code></pre>";
    }
    

    我会这样称呼它 echo code($query->row('html')); . 我知道我的问题缺乏“深度”,但这是最好的方法吗?或者,是否可以解析输出的格式(例如,javascript注入),或者在某些机器上不能正确输出?

    谢谢!

    杰克

    编辑:我有一个新的(相关的)问题 :我想用突出显示字符串 highlight_string() . 但是,我不能让它正常工作。我 认为 我明白原因,但我不太确定如何纠正。

    function Code($code)
    {
        return "<pre><code>".highlight_string(nl2br(htmlspecialchars($code)))."</code></pre>";
    }
    

    你可以从中看到我正在使用 突出显示_string() 就这一切。但是,输出根本没有突出显示,而是作为字符实体输出。( &lt; ,‘等等’等等。如果我将函数顺序重组为:

    return "<pre><code>".nl2br(htmlspecialchars(highlight_string($code)))."</code></pre>";

    我发现字符实体没有输出,但字符串仍然没有突出显示。为了澄清,我也没有会影响文本颜色的CSS格式。另外,我已经检查了我的PHP设置,其中明确地突出显示了指定的颜色。

    1 回复  |  直到 15 年前
        1
  •  3
  •   Pekka    15 年前

    不,没关系。 htmlspecialchars() 将任何HTML控件字符转换为其等效实体( < = & gt; &lt; 等等),那里没有注入任何东西的方法。

    推荐文章