我试图制作html标签的白名单,这是我的代码:
$string = "<x>-<x>";
$result = preg_match('#^<(?!white1|white2)>.*<(\1)>$#i', $string);
但它返回错误,我不知道为什么。我简化了正则表达式以避免混淆,但这仍然是相同的想法。
我希望匹配每个正确的标签,但我希望保持安全。这个正则表达式将在preg_replace上删除每个匹配的标签,并让我允许的那些。
提前感谢您的帮助!
编辑:如果我找到了使用正则表达式的方法,我会把解决方案放在这里。但就目前而言,我会使用strip_tags()
。
EDIT2:我认为最简单的方法是解析所有标签,然后还原我们允许的标签。
答案 0 :(得分:0)
如果您想消除不需要的标签,可以使用strip_tags:
$allowedTags = '<p><a><img>';
$filteredContent = strip_tags($content, $allowedTags);