$username = I('username');
$names=M('mgc')->field('mgc')->select();
//取数据库中存在的敏感词库
$hei = array_column($names, 'mgc');
$blacklist="/".implode("|",$hei)."/i";
if(preg_match($blacklist, $username, $matches)){
$this->apiAjaxReturn("", false, '用户名中包含敏感词');
}
思路是,先获取敏感词库,然后拼接成字符创,然后与用户名做匹配,如果匹配上了就是包含,没匹配上就是没有
补充一下,上面那个用正则表达式对应的方法可能会出问题,就是敏感词巨多的时候,会超出限制。
$num=substr_count($username,$blacklist);
if($num>0){
echo("有敏感词");
}else{
echo("安全");
}