我有一个正在开发的应用程序,用户可以在其中为自己选择一个名称。我需要能够过滤掉“坏”的名字,所以我现在这样做:
$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 这样的数组中),并搜索用户的名字以查看该词是否在他们的名字中。我对正则表达式不是很好,我能想到的唯一方法就是把它全部通过一个看起来效率很低的循环。有人有更好的主意吗?我想我需要弄清楚如何用数组搜索字符串。