0

我有这个函数从数据库中获取一些用户提交的 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>";
}

正如你所看到的,我正在使用highlight_string()它。但是,输出根本没有突出显示,而是作为字符实体(&lt;、'>' 等)输出。如果我将函数排序改组为:

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

我发现字符实体没有输出,但字符串仍然没有突出显示。澄清一下,我没有 CSS 格式会影响应用的文本颜色。此外,我检查了我的 PHP 设置,其中肯定有指定的突出显示颜色。

4

1 回答 1

3

不,没关系。htmlspecialchars()会将任何 HTML 控制字符转换为其实体等价物(<=>&lt;等),没有办法在那里注入任何东西。

于 2010-08-10T11:36:39.017 回答