PHP / Regex用于智能检查

时间:2015-02-10 21:15:19

标签: php regex

我希望在PHP中使用Regex构建一个智能审查器用于留言板。基本上,我有一个数组坏词(在Regex中)以及用于每个的替换。我检测到字母之间的空格以防止绕过检查员,但是我挂了一个有HTML标签包裹的任何坏词的人。所以,如果&#34; shit&#34;被阻止,我可以抓住&#34; s&#34;任何数量的空格,但如果有人sh<b>i</b>t(我用粗体标签包裹),它就会通过。这显然不会发生,所以我在这里难倒。

这是我到目前为止所做的:

$bad_words = array('/s\s*h\s*i\s*t/i'=>'s***');
$new_string = preg_replace(array_keys($bad_words), array_values($bad_words), $string);
return $new_string;

我想过用strip_tags()包装$ string但是因为帖子内容的其余部分(不仅仅是被追捧的坏词)可能包含HTML,这将在返回时破坏整个留言板帖子。我们将非常感谢您提供的任何帮助或见解!

1 个答案:

答案 0 :(得分:3)

事实是 - 无论你添加什么来捕捉脏话,如果有人想找到解决方法,他们会。你尝试和阻止它越多,它们就会得到更多的误报。

即使你的方法现在,如果有人进入“将它推送到github”,你将把它变成“Pus *** to github”。

老实说,你最好的选择是捕捉明显的,并有办法将帖子标记为淫秽。

在这个网站上看一些好的资源是:

How do you implement a good profanity filter?

"bad words" filter