Фильтр плохих слов определяет только английские слова, но не русские, как поправить?
Через поиск нашёл вот такой интересный код контактной формы с проверкой на плохие слова. Т.е. при попытке отправить сообщение, в котором имеется плохое слово или слова, выводится сообщение.
Вот часть того кода, где происходит проверка.
$MessageArray = explode(" ", $message);
//Get SPAM words from file and store them in an array
$SpamWords = file_get_contents('spamwords.txt');
$SpamArray = explode("\r\n", $SpamWords);
//Cycle through all the words in the message
foreach($MessageArray as $word){
//Check the word for SPAM words, if it is don't send the email
if(in_array($word, $SpamArray)){
echo '<h1>Spam Guard...';
die();
}
}
Но проблема в том, что воспринимаются корректно только английские слова, а написанные на русском не определяются. Как это исправить?
Ответы (1 шт):
Файл spamwords.txt должен содержать в том числе и русские слова. Необходимо убедиться, что кодировка spamwords.txt и текста в запросе совпадают (вероятно ваша проблема именно тут). И ещё переносы строк в spamwords.txt должны быть именно \r\n (что не всегда так).
Проверьте кодировку. Посмотрите что происходит в коде: сократите список спам-слов до одного "тест", введите в форму "тест" и сделайте var_dump($MessageArray, $SpamArray).