Быстрое решение включает проверку ключа, так как для этого не требуется перебирать массив. Однако для этого потребуется изменить список плохих слов.
$showstopper = array('badword1' => 1, 'badword2' => 1, 'badword3' => 1, 'badword4' => 1);
$yourmouth = "im gonna badword3 you up";
// split words on space
$words = explode(' ', $yourmouth);
foreach($words as $word) {
// filter extraneous characters out of the word
$word = preg_replace('/[^A-Za-z0-9]*/', '', $word);
// check for bad word match
if (isset($showstopper[$word])) {
die('game over');
}
}
preg_replace гарантирует, что пользователи не будут злоупотреблять вашим фильтром, набрав что-то вроде bad_word3 . Это также гарантирует, что проверка ключа массива не бомбит.