PHP stripos() return 只有错误

PHP stripos() return only false

我正在制作 Badword 过滤器,如果它们是字符串中的坏词,则 return 为真。 但是发生的事情是,无论用户编写代码 return false.

我已经尝试将 stripos() 的参数转换为字符串(以防万一),但仍然如此。 我用 "/$word/i", $_POST['message']

试过 preg_match()

这是我的检查功能:

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 总是 return 错误,即使我只输入了 bannedwods 列表中的一个坏词...

默认情况下,file() 返回的字符串在每行末尾包含换行符。所以 $word 以换行符结尾,并且只有当坏词在行尾时才会匹配。

使用 FILE_IGNORE_NEW_LINES 标志删除换行符。

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

你也应该在找到匹配项后跳出循环,没有必要一直检查其他词。