flexic / spam-filter

PHP反垃圾邮件过滤器

1.0.0 2022-10-09 16:23 UTC

This package is auto-updated.

Last update: 2024-09-09 20:34:06 UTC


README

Spam-Filter包定义了一个面向对象的层,用于检查字符串是否为垃圾邮件。

内置过滤器类型

正则表达式过滤器

正则表达式过滤器通过正则表达式模式的数组来匹配垃圾邮件。如果正则表达式模式的结果与输入匹配,则将其评级为垃圾邮件。

黑名单过滤器

黑名单过滤器用于通过模式数组来匹配垃圾邮件。如果输入包含模式,则将其评级为垃圾邮件。

白名单过滤器

白名单过滤器用于检查输入是否包含任何白名单模式。如果没有白名单模式包含输入,则将其评级为垃圾邮件。

URL过滤器

URL过滤器用于检查输入是否包含URL。

重复过滤器

重复过滤器用于匹配文本中的单词重复。`$minConsecutiveWords`定义了是否仅匹配特定长度的单词或句子。警告:对于较长的文本,此过滤器执行许多操作。

示例

$spamFilter = new \Flexic\SpamFilter\SpamFilter([
    new \Flexic\SpamFilter\Filter\BlacklistFilter([
        'want to buy'
    ]),
    new \Flexic\SpamFilter\Filter\RegexFilter([
        '/\[\[url\=.*\]\]/'
    ])
]);

$spamFilter->check(
    'Hello, how are you? Do you want to buy [[url=https://example.com/product]] this Product?'
); // Result: true (both filters detected spam)

$spamFilter->check(
    'Hey my friend. Do you want to test a new PHP Library?'
); // Result: false (No filter detected spam)

创建自定义过滤器

Spam-Filter支持创建自定义过滤器。自定义过滤器必须实现`\\ThemePoint\\SpamFilter\\Filter\\FilterInterface`及其定义的函数。

示例

class EmailFilter implements \Flexic\SpamFilter\Filter\FilterInterface
{
    public function check($input): bool
    {
        \preg_match_all('/(([^ ].*)@(.*))/', $input, $matches, \PREG_SET_ORDER, 0);
        
        if (\count($matches) > 0) {
            return true;
        }
        
        return false;
    }
}

注意以下`check`函数的行为

  • 如果检测到输入中的垃圾邮件,则返回`true`。
  • 如果没有检测到输入中的垃圾邮件,则返回`false`。

异常

您可以通过`$responseOnException`的值来控制Spam Filter在抛出异常时的响应。`$responseOnException`的值与过滤器结果等效。

如果您希望Spam Filter在抛出异常时将输入定义为垃圾邮件,请将此值设置为`true`。

变更日志

[1.0]

  • 包的初始提交

Donate