>我有一个问题。在我的数据库中,我允许用户通过包含html实体和纯文本的输入提交帖子标题。根据我所读到的内容,我在将他们的帖子添加到数据库之前使用mysqli_real_escape_string来转义他们的帖子,然后在将 html 输出到页面上时使用 html实体。但是,如果用户发布类似
<div>( ͡° ͜ʖ ͡°)</div>
它使mysqli转义并存储在数据库中
"<div>( ͡° ͜ʖ ͡°)</div>"
如果我在输出时在此字符串上使用 html实体,它将不返回任何内容。这一定与字符串中已有的 html 实体有关,因为如果我测试
<div>plaintext</div>
它工作正常。如何在已包含编码实体的字符串中转义 html 实体(如 <和>)?和>
htmlentities 的目的是将特殊字符转换为浏览器可渲染的字符串。浏览器将呈现转换后的字符,因此不需要通过 htmlentity 重新转换。
(发布)->html实体->mysqli_real_escape_string->(存储)->(选择)->(显示)
最好的做法是在保存到数据库之前转换为 html实体,然后将其输出到您的页面而不进行过滤或处理。所以你还行
只是不要在输出上再次使用 html实体...
但如果你真的需要...使用html_entity_decode();
将它们转换回来请参阅:http://php.net/manual/fr/function.html-entity-decode.php
然后使用htmlentities()
但我不明白你为什么要这样做。