빠른 해결책은 배열을 반복 할 필요가 없으므로 키를 확인하는 것입니다. 그러나 나쁜 단어 목록을 수정해야합니다.
$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 뭔가를 입력하여 필터를 남용하지 않습니다 보장합니다. 또한 배열 키 확인이 폭탄을 막지 않도록합니다.
$ re = "/ (". implode ("|", $ showstopper). ") /"; if (preg_match ($ re, $ yourmouth)> 0) {die ("foulmouth"); } –