How to check whether a user string contains any forbidden words from a list in PHP

2 Answers

0 votes
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

*/

 



answered Dec 26, 2025 by avibootz
0 votes
function containsForbiddenWords(string $input, array $forbidden): string {
    return str_ireplace($forbidden, '', $input);
}

$input = "This text contains a badword inside";
$forbidden = ['badword', 'evil', 'kill', 'nasty', 'terrible'];

$replaced = containsForbiddenWords($input, $forbidden);

if ($replaced !== $input) {
    echo "Forbidden word detected";
} else {
    echo "No forbidden words found";
}



/*
run:

Forbidden word detected

*/

 



answered Dec 26, 2025 by avibootz

Related questions

...