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

慕盖茨4494581
TA贡献1850条经验 获得超11个赞
默认情况下,返回的字符串在每行末尾包含换行符。因此,以换行符结尾,并且仅当坏词位于行尾时才会匹配。file()
$word
使用该标志删除换行符。FILE_IGNORE_NEW_LINES
$bannedwords = file("bannedwords", FILE_IGNORE_NEW_LINES);
一旦找到匹配项,您也应该打破循环,无需继续检查其他单词。
- 1 回答
- 0 关注
- 84 浏览
添加回答
举报
0/150
提交
取消