如何在包含实体的字符串上使用PHP htmlentities

如何在包含实体的字符串上使用PHP htmlentities,php,html,Php,Html,我有个问题。在我的数据库中,我允许用户通过包含html实体和纯文本的输入提交文章标题。根据我所读到的内容,在将帖子添加到数据库之前,我使用mysqli_real_escape_字符串来转义他们的帖子,然后在将html输出到页面时使用htmlentities。但是,如果用户发布类似 <div>( ͡° ͜ʖ ͡°)</div> () 它将mysqli转义并存储在数据库中作为 "<div>( &#865;° &#860;&#662;

我有个问题。在我的数据库中,我允许用户通过包含html实体和纯文本的输入提交文章标题。根据我所读到的内容,在将帖子添加到数据库之前,我使用mysqli_real_escape_字符串来转义他们的帖子,然后在将html输出到页面时使用htmlentities。但是,如果用户发布类似

 <div>( ͡° ͜ʖ ͡°)</div>
()
它将mysqli转义并存储在数据库中作为

"<div>( &#865;° &#860;&#662; &#865;°)</div>"
“(͡;°͜;ʖ;͡;°)
如果在输出时在此字符串上使用htmlentities,它将不返回任何内容。 这一定与字符串中已经存在的html实体有关,因为如果我测试

<div>plaintext</div>
纯文本

它很好用。如何在已经包含编码实体的字符串中转义html实体,例如<和>。

htmlentities的目的是将特殊字符转换为浏览器可渲染字符串。浏览器将呈现转换后的字符,因此不需要通过htmlentities进行重新转换


(POST)->htmlentities->mysqli\u real\u escape\u string->(存储)->(选择)->(显示)

最好先转换为htmlenties,然后保存到数据库,然后将其输出到页面,而不进行过滤或处理。那你的好吗

只是不要在输出上再次使用htmlentities

但是如果你真的需要。。。使用
html_entity_decode()将它们转换回来
见:

然后使用
htmlentities()


但我不明白你为什么要这样做。

不要在输出上使用htmlentities,只需重复它即可。