正则表达式除字符串 + 组使用之外的所有内容


Regex everything but strings + use of groups

我正在尝试将html标签列入白名单,这是我的代码:

$string = "<x>-<x>";
$result = preg_match('#^<(?!white1|white2)>.*<('1)>$#i', $string);

但它返回 false,我不知道为什么。我简化了正则表达式以避免混淆,但这仍然是相同的想法。

我想匹配每个正确的标签,但我想保持安全的标签。这个正则表达式将继续preg_replace擦除每个匹配的标签,并让那些我允许的标签。

提前感谢您的帮助!

编辑:如果我找到一种方法来使用正则表达式来做到这一点,我会把解决方案放在这里。但是现在,我会用strip_tags()来做.

EDIT2:我认为最简单的方法是解析所有标签,然后恢复我们允许的标签。

如果要

消除不需要的标签,可以使用strip_tags:

$allowedTags     = '<p><a><img>';
$filteredContent = strip_tags($content, $allowedTags);