php - 检查字符串是否包含垃圾邮件单词

标签 php arrays function

我正在尝试实现在堆栈溢出中找到的一些代码,其中包含垃圾邮件过滤器。当我只是输入垃圾邮件单词时,该功能会起作用,但是当我在垃圾邮件单词之前输入一堆文本时,它就会通过。我检查了来源,我一定遗漏了一些东西,有人可以帮忙吗?

代码是:

function strpos_arr($haystack, $needle) {
    if(!is_array($needle)) $needle = array($needle);
    foreach($needle as $what) {
    if(($pos = strpos($haystack, $what))!==false) return $pos;
}
return false;
}

我这样调用它的函数是:

if(strpos_arr($text, $bad_words)) {
        return false;
    } else {
        return true;
    }

该数组只是一个简单的数组,其中有很多不好的单词,如下所示:

$bad_words = array(
        'bad word 1',
        'bad word 2');

原文链接:Using an array as needles in strpos

谢谢

最佳答案

首先,看来你的逻辑是错误的。我认为:

if(strpos_arr($text, $bad_words)) {
    return false;
} else {
    return true;
}

应该是:

if (strpos_arr($text, $bad_words)) {
    return TRUE;
} else {
    return FALSE;
}

然后,如果发现错误的单词,您将返回 $pos。如果 $pos 碰巧为零,则下一次检查将失败。除非你需要知道坏词在文本中的位置,否则我会将其更改为:

if (($pos = strpos($haystack, $what)) !== FALSE) return TRUE;

关于php - 检查字符串是否包含垃圾邮件单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26360201/

相关文章:

php - 如何检查重复的用户名和/或电子邮件?

javascript - 考虑到我的具体情况,是否有比 Array.map() 更高效地遍历 JSON 的方法?

无法理解如何从 C 中的函数返回字符串

javascript - std 正态 cdf、正态 cdf 或误差函数

php - 连接来自多个 MySQL 表的结果并使用 PHP 输出

javascript - 需要使用提交表单在 CSS 中转换 HTML 表格

ruby-on-rails - Rails 序列化符号数组属性

windows - Windows播放声音的最低级别的功能是什么?

php - 本地机器 SQL DB 工作; Web dB 上的访问被拒绝错误

c - 将结构投影到c中的字节数组