【发布时间】:2016-11-24 04:54:30
【问题描述】:
我有这个 if 语句,可以在 types = text 的输入中检查这些“冒犯性词”
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';
}
这段代码是由另一个开发人员编写的,我只是想知道除了为我必须输入的每个单词添加双管道之外还有其他方法吗?我猜它看起来有点像编写这样的代码的原始方式。
【问题讨论】:
-
一个问题是,如果你真的想尽量避免冒犯的话,你需要在里面放更多的词。循环遍历一组模式进行匹配比一堆 OR 更易于管理。
-
检查this answer。
-
“OR ||”是否有任何缺点或不建议在代码中以这种方式使用,而不是凌乱且难以管理?
-
如果您使用 strstr,请确保您也将检查它们的类型。由于 var_dump((bool)strstr('10', '0')) === false。所以总是用户 if(strstr('10', '0') !== false)