我希望在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,这将在返回时破坏整个留言板帖子。我们将非常感谢您提供的任何帮助或见解!
答案 0 :(得分:3)
事实是 - 无论你添加什么来捕捉脏话,如果有人想找到解决方法,他们会。你尝试和阻止它越多,它们就会得到更多的误报。
即使你的方法现在,如果有人进入“将它推送到github”,你将把它变成“Pus *** to github”。
老实说,你最好的选择是捕捉明显的,并有办法将帖子标记为淫秽。
在这个网站上看一些好的资源是:
How do you implement a good profanity filter?
和