Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用HTML\u实体\u解码对HTML进行解码后,它不会正确显示_Php_Html - Fatal编程技术网

Php 使用HTML\u实体\u解码对HTML进行解码后,它不会正确显示

Php 使用HTML\u实体\u解码对HTML进行解码后,它不会正确显示,php,html,Php,Html,我在解码和显示一些HTML时遇到了问题 我从一个名为TinyMCE的WYSIWYG文本编辑器发布数据,并使用以下代码将其存储到数据库中,不包括不相关的代码 $text = $_POST['bbcode_field']; // from textarea if(get_magic_quotes_gpc()){ $text = stripslashes($text); //strip off the slashes if they are magically added. } $

我在解码和显示一些HTML时遇到了问题

我从一个名为TinyMCE的WYSIWYG文本编辑器发布数据,并使用以下代码将其存储到数据库中,不包括不相关的代码

$text = $_POST['bbcode_field']; // from textarea
if(get_magic_quotes_gpc()){
     $text = stripslashes($text);
     //strip off the slashes if they are magically added.
}
$text = htmlentities($text);
然后,我使用以下命令将数据输入数据库

Report ='".htmlspecialchars(mysql_real_escape_string($text), ENT_QUOTES)."',
这很好,它可以很好地插入数据库。当我尝试从数据库中检索数据并使用

'.html_entity_decode($row['Content']).'
和回显,它的回显,但包括HTML格式,如标签等

我需要显示在HTML页面上,但使用HTML标记的格式

我哪里出了问题

谢谢。

删除以下内容:

$text = htmlentities($text);
以及此处标记的部分:

Report ='".htmlspecialchars(mysql_real_escape_string($text), ENT_QUOTES)."',
           ^^^^^^^^^^^^^^^^^                               ^^^^^^^^^^^^^
这是:

html_entity_decode($row['Content'])
问题是您对HTML实体进行了两次编码,但只对它们进行了一次解码。这意味着它们只编码一次,当然不会被解释为HTML,这是编码它们的关键。实际上,您根本不需要或不想对它们进行编码


但是,如果您接受来自客户端的任意HTML,则需要对其进行过滤以避免HTML注入。仔细看看。

停止对HTML进行双重和三重编码,然后再次解码。你为什么要这么做?如果我不保留ENT_引号,那么我就不能在文本中添加单引号或双引号,因为它们会搞乱查询。有办法解决这个问题吗?您已经通过SQL转义实现了。看见也看到