我有一个应用程序,正在开发中,用户可以为其自己选择一个名称。我需要能够过滤出“坏”的名字,所以我做这个现在:用户名中搜索“坏名字”的最有效方法
$error_count=0;
$bad_names="badname1badname2";
preg_match_all("/\b".$user_name."\b/i",$global['bad_names'],
$matches,PREG_OFFSET_CAPTURE);
if(count($matches[0])>0)
{
$error_count++;
}
这将告诉我,如果用户的名字是坏的名称列表中,但是,它并没有告诉我如果错误名称本身在用户名中。他们可能会把一个坏词与其他东西结合起来,而我不会察觉它。
什么样的正则表达式(如果我甚至使用正则表达式)我会用这个?我需要能够接受任何错误的名称(最好是像$ bad_names这样的数组),然后搜索用户的名称以查看该单词是否在其名称中。我对正则表达式并不是很满意,我能想到的唯一方法就是把它全部通过一个看起来非常低效的循环。任何人有更好的主意?我想我需要弄清楚如何通过一个数组搜索字符串。
我曾尝试编辑自己的帖子把代码行,但你打我给它mellamokb:P – Phillip 2012-04-18 02:02:02
带我看了一个有用的漫画/条关于如何简单的“坏词”过滤可以搞砸和捕捉无害的单词。当然,我当然无法找到它。 – 2012-04-18 02:17:28
@SurrealDreams [Clbuttic Mistake](http://www.telegraph.co.uk/news/newstopics/howaboutthat/2667634/The-Clbuttic-Mistake-When-obscenity-filters-go-wrong.html) – 2012-04-18 02:32:44