Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/72.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 转义除<;br>;_Php_Html_Xss_Html Entities - Fatal编程技术网

Php 转义除<;br>;

Php 转义除<;br>;,php,html,xss,html-entities,Php,Html,Xss,Html Entities,我试图在页面上显示评论,但遇到了一些问题 我试图处理两种不同类型的评论: (1) XSS类型。。e、 g.警报('hi')。通过在它进入数据库之前对其进行转义,然后在其上运行stripslashes和htmlentities,可以相当容易地处理这个问题 (2) 带有的注释在其中中断。当数据存储到数据库中时,我正在数据库上运行nl2br,因此数据看起来像hihelloetc。但是,当我显示此注释时,不会像我希望的那样变成分页符 知道怎么办吗?我应该注意,关闭htmlentities会修复第二种类型

我试图在页面上显示评论,但遇到了一些问题

我试图处理两种不同类型的评论:

(1) XSS类型。。e、 g.
警报('hi')
。通过在它进入数据库之前对其进行转义,然后在其上运行stripslashes和htmlentities,可以相当容易地处理这个问题

(2) 带有

的注释在其中中断。当数据存储到数据库中时,我正在数据库上运行nl2br,因此数据看起来像
hi
hello

etc
。但是,当我显示此注释时,

不会像我希望的那样变成分页符

知道怎么办吗?我应该注意,关闭htmlentities会修复第二种类型,但第一种类型会作为纯html执行,并显示一个警报对话框

谢谢,
Phil

一种方法:用占位符替换

,如
\n
。然后执行htmlentities来清理html代码。最后,将
\n
替换回

以恢复换行符。

如果要删除不需要的标记,可以尝试
去除标记。它支持
允许的\u标记
,因此您可以指定不希望剥离的任何标记。样本来自:

//允许和
//如果不希望剥离,可以添加
回音条标签($text,);

因此,在您将所有
\n
转换为换行符后,您不必担心它被剥离。可能不是你想要的,但希望它能给你一个想法。

你试过脱衣舞标签吗?虽然这不是最干净的解决方案,但效果很好——谢谢。哇,我没意识到这是存在的。谢谢你!是的,但它实际上撕开了标签,例如,也许你只是想被转义,而不是删除…脚本和其余的正常
// Allow <p> and <a>
// you can add <br> if you want it not stripped
echo strip_tags($text, '<p><a>');