function containsForbiddenWords(string $input, array $forbidden): bool {
// Normalize input
$input = strtolower(trim($input));
$input = preg_replace('/[^a-z0-9]+/i', ' ', $input);
// Build safe regex pattern
$pattern = '/\b(' . implode('|', array_map('preg_quote', $forbidden)) . ')\b/i';
// Check for forbidden words
return preg_match($pattern, $input) === 1;
}
$input = "This text contains a badword inside";
$forbidden = ['badword', 'evil', 'kill', 'nasty', 'terrible'];
if (containsForbiddenWords($input, $forbidden)) {
echo "Forbidden word detected";
} else {
echo "No forbidden words found";
}
/*
run:
Forbidden word detected
*/