我已经得到了这个if语句来检查这些"攻击性词语"在输入的类型=文本
if(strstr($key,'bi**h') || strstr($key,'fu**k') || strstr($key,'son of a bit**') || strstr($key,'cun*') || strstr($key,'fuc**r') || strstr($key,'mother fuc**') || strstr($key,'shi**') || strstr($key,'cr**p') ){
$erros['insult']='please avoid any offending words';
}
这段代码是由另一位开发人员制作的,我只是想知道除了为每个我必须输入的单词添加双重管道之外还有什么方法吗?我想,它看起来像是编写这样一个代码的原始方式。
答案 0 :(得分:1)
请注意不良字词过滤器, shitake 这个词怎么样?这是替换坏词并检查原始字符串的简单方法:
$bad = array('bi**h', 'fu**k', 'son of a bit**', 'cun*', 'fuc**r', 'mother fuc**', 'shi**', 'cr**p');
if(str_replace($bad, '', $key) != $key) {
$erros['insult']='please avoid any offending words';
}
然而,if
和||
方法会更快。
答案 1 :(得分:-1)
我猜你要么坚持用ORs strstr / strpos,要么使用正则表达式。如果你有一个可以忽略的停用词列表,我建议你避免使用正则表达式。