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);
你也应该在找到匹配项后跳出循环,没有必要一直检查其他词。
我正在制作 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);
你也应该在找到匹配项后跳出循环,没有必要一直检查其他词。