I have an app that I’m developing, in it users can choose a name for themselves. I need to be able to filter out “bad” names, so I do this for now:
$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++;
}
This would tell me if the user’s name was inside the bad names list, however, it doesn’t tell me if the bad name itself is in the user’s name. They could combine a bad word with something else and I wouldn’t detect it.
What kind of regex (if I even use regex) would I use for this? I need to be able to take any bad name (preferably in an array like $bad_names), and search through the user’s name to see whether that word is within their name. I’m not great with regex, and the only way I can think of is to put it all through a loop which seems highly inefficient. Anyone have a better idea? I guess I need to figure out how to search through a string with an array.
1 Answer