如何让PHP strip_tags删除HTML和Script标签,而不是XML?

问题描述 投票:0回答:3

我使用php strip_tags()函数从我的文本区域输入中删除html标记,并删除<script>标记以帮助防止脚本攻击。

无论如何,用户通常需要输入事先不知道的XML标签。但是,我的strip_tags函数也删除了这些良性xml标记,这是不可接受的。

此外,我有时会把文件名。<date> .png(必须在那里添加一个空格,因为StackOverflow也删除了它),以指示文件名或路径的可变部分。在这种情况下,我最终得到的是在运行strip_tags之后的filename..png。

任何帮助将不胜感激。

php html xml strip-tags
3个回答
0
投票

strip_tags()定义为删除所有HTML / XML标记(除了第二个参数中指定的各个标记)。两种类型的标签之间没有区别,也没有区别用作占位符的<date> - 这三种看起来像strip_tags()的标签,因此它将它们删除。


0
投票

不可能使strip_tags不删除未知标签。你可能想看看DOMDocument是否可行。


0
投票
$s = preg_replace("/<\?xml(.*?)\?>/i", "<xmlDeclaration$1>", $s);
$s = strip_tags($s, '<xmlDeclaration><' . implode('><', $allowedTags) . '>');
$s = preg_replace("/<xmlDeclaration(.*?)>/i", "<?xml$1?>", $s);
© www.soinside.com 2019 - 2024. All rights reserved.