这是反垃圾邮件的有效编码吗?

Str*_*rry 1 php

if(strpos($string, "A Bad Word") != false){
    echo 'This word is not allowed';
}
if(strpos($string, "A Bad Word") != false){
    echo 'This word is not allowed';
}
Run Code Online (Sandbox Code Playgroud)

好的,所以我想检查提交数据,看看是否有不恰当的单词.而不是制作5个实例,是否有更有效的方法?

tim*_*dev 6

我相信一般来说,有一种更聪明的方法可以做到这一点.

如果你只是想要更简洁,那么最好循环一些坏词,而不是添加重复的,几乎相同的条件(ifs):

<?PHP
$banned = array('bad','words','like','these');

$looksLikeSpam = false;
foreach($banned as $naughty){
    if (strpos($string,$naugty) !== false){
        $looksLikeSpam=true;
    }
}

if ($looksLikeSpam){
   echo "You're GROSS!  Just... ew!";
   die();
}
Run Code Online (Sandbox Code Playgroud)

编辑:另外,请注意,在您的问题代码中,您测试strpos!= false.你真的想要!==,因为如果第一个单词,strpos()将返回0,比方说,PENIS.0将被转换为false.看看我要去哪里?

此外,您可能希望使用stripos(),以区分大小写(除非您只关心人们是否SHOUT令人反感的话):-)