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