【问题标题】:htmlspecialchars not working as expectedhtmlspecialchars 没有按预期工作
【发布时间】:2019-01-14 23:52:30
【问题描述】:

我可能用错了,问题是这样的: 我有 php 代码可以像这样回显到页面: <?php echo "<h1>" . htmlspecialchars($array['text']) . "</h1>" ?>

该变量从数据库中以这样的 html 结构回显

echo "<h1> Hello </h1>" 这很好用,但是一旦我回显"> text here" 之类的内容,一切都会中断。文本出现在正文的开头,我实际上可以将 JS 注入其中并且 .. 它可以工作。

我不知道自己做错了什么,是我使用了htmlspecialchars 错误还是其他地方的问题?

【问题讨论】:

    标签: php htmlspecialchars


    【解决方案1】:

    使用以下内容:

    htmlspecialchars($string, ENT_COMPAT,'ISO-8859-1');
    

    这使得htmlspecialchars 使用ISO-8859-1 编码,我假设你正在使用它。

    关于第三个参数,叫encoding,根据htmlspecialchars docs

    如果省略,则编码的默认值会根据使用的 PHP 版本而有所不同。在 PHP 5.6 及更高版本中,default_charset 配置选项用作默认值。 PHP 5.4 和 5.5 将使用 UTF-8 作为默认值。早期版本的 PHP 使用 ISO-8859-1。

    【讨论】:

    • 如果有人可以提供更多详细信息,我会将它们添加到我的答案中。我对编码问题不是很熟悉。
    • 非常感谢。看起来它被插入到了 的开头,因为我在元标题和描述标签中使用了用户生成的内容,这也解决了这个问题:)
    猜你喜欢
    • 2021-10-19
    • 2020-03-18
    • 2012-06-14
    • 2014-11-15
    • 1970-01-01
    • 2012-07-02
    • 2011-09-07
    • 2013-03-03
    • 2015-05-18
    相关资源
    最近更新 更多