只返回错误的

我正在制作一个坏词过滤器,如果字符串中有一个坏词,则返回 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


德玛西亚99
浏览 85回答 1
1回答

慕盖茨4494581

默认情况下,返回的字符串在每行末尾包含换行符。因此,以换行符结尾,并且仅当坏词位于行尾时才会匹配。file()$word使用该标志删除换行符。FILE_IGNORE_NEW_LINES$bannedwords = file("bannedwords", FILE_IGNORE_NEW_LINES);一旦找到匹配项,您也应该打破循环,无需继续检查其他单词。
打开App,查看更多内容
随时随地看视频慕课网APP