我想在文本框上使用基于 PHP 的工具 HTML Purifier来防止 xss,但我想允许以下内容:
- 基本标签,如
<b>
,<i>
,<u>
- 链接
- 图片
我想阻止所有 CSS 和 JavaScript。我刚刚尝试了 HTML Purifier,但在这种情况下失败了。看看这个例子。我该如何处理?
此外,我希望表单的所有单词都#abcd
被@abcd
自定义 html 替换(正如您所猜到的那样,它是一个链接)。这有可能还是我必须自己更换?
我想在文本框上使用基于 PHP 的工具 HTML Purifier来防止 xss,但我想允许以下内容:
<b>
, <i>
,<u>
我想阻止所有 CSS 和 JavaScript。我刚刚尝试了 HTML Purifier,但在这种情况下失败了。看看这个例子。我该如何处理?
此外,我希望表单的所有单词都#abcd
被@abcd
自定义 html 替换(正如您所猜到的那样,它是一个链接)。这有可能还是我必须自己更换?
将 HTML.Allowed 设置为类似b,i,u,a[href],img[src|alt]
见这里。
正则表达式和 e 修饰符
功能检查标签($标签){ $tag = removeslashes( $tag ); ... 返回 $secureTag; } $html = preg_replace("/<[^>]+>/e", "checkTag('\$0')", $input);
PHP 有一个内置函数,它似乎完全可以满足您的需求。
http://php.net/manual/en/function.strip-tags.php
它甚至具有白名单功能,因此它可以允许一些标签。
对于 the#abcd
和@abcd
部分,我认为您将不得不为此使用 a preg_replace()
。我使用了一个类似的功能,它@abcd
很好地完成了这部分:)。
$sClickText = preg_replace("/\@([a-zA-Z0-9_])+/",' <a href="#reply" onClick="reply(\'' . "$0" . '\')">' . "$0" . '</a>',$sInputText);