PHP stripos () возвращает только ложь - PullRequest
0 голосов
/ 12 февраля 2020

Я делаю фильтр Badword, который возвращает true, если это плохое слово в строке. но происходит то, что независимо от того, что пользователь напишет, код вернет false.

Я уже пытался преобразовать аргументы stripos() в строку (на всякий случай), но все же. Я пытался preg_match() с "/$word/i", $_POST['message']

, вот моя функция для проверки:

function MessageBad(){
    $BadWord = false;
    $bannedwords = file("bannedwords");
    foreach($bannedwords as $word) {
            if(stripos($_POST['message'], $word) !== false){
                    $BadWord = true;
            }
    }
    return $BadWord; 
}

, но stripos($_POST['message'], $word) !== false всегда возвращают false, даже когда я ввожу только плохое слово из списка запрещенных вод ...

1 Ответ

3 голосов
/ 12 февраля 2020

По умолчанию строки, возвращаемые file(), включают символ новой строки в конце каждой строки. Таким образом, $word заканчивается новой строкой и будет соответствовать только в том случае, если плохое слово находится в конце строки.

Используйте флаг FILE_IGNORE_NEW_LINES для удаления новых строк.

$bannedwords = file("bannedwords", FILE_IGNORE_NEW_LINES);

Вы также должны выйти из l oop, как только найдете совпадение, нет необходимости постоянно проверять другие слова.

...