denismitr/spam-detector

PHP垃圾邮件检测器

v0.4 2018-07-08 21:33 UTC

This package is auto-updated.

Last update: 2024-09-23 09:01:01 UTC


README

作者

Denis Mitrofanov

安装

composer require denismitr/spam-detector

用法

您可以将所需检查的数量传递给 Denismitr\Spam\Spam 类的构造函数。每个检查都必须实现 Denismitr\Spam\Contracts\Inspection 接口。目前,您将获得 6 个默认检查

  • Denismitr\Spam\Inspections\AsciiOnly
  • Denismitr\Spam\Inspections\YahooCustomerSupport
  • Denismitr\Spam\Inspections\RussianForbiddenWords
  • Denismitr\Spam\Inspections\RussianBadWords
  • Denismitr\Spam\Inspections\KeyHeldDown
  • Denismitr\Spam\Inspections\EnglishForbiddenWords

使用示例

$text = "Some text to check";

$spam = new Spam([
    YahooCustomerSupport::class,
    RussianForbiddenWords::class,
    RussianBadWords::class,
    KeyHeldDown::class
]);

try {
    $spam->detect($text);
} catch(SpamDetected $e) {
    // Do stuff
}

或者,要检查给定的字段是否包含垃圾邮件,可以使用 `detectAny` 方法

try {
    $spam->detectAny([
        'title' => 'Some title...',
        'body' => 'Some body...'
    ]);
} catch(SpamDetected $e) {
    // Do stuff
}

如果给定的字段中包含垃圾邮件,此方法将 抛出异常

当然,如果您需要,另一个方法 detectAll 将在所有字段都包含垃圾邮件时抛出异常。

try {
    $spam->detectAll([
        'title' => 'Some title...',
        'body' => 'Some body...'
    ]);
} catch(SpamDetected $e) {
    // Do stuff
}

另一个用例是当您只想检查单个检查。为此,有一个静态方法 inspect,它接受一个字符串作为搜索范围和检查的 实例,如下所示

$text = 'Some text to check';

try {
    Spam::inspect($text, new KeyHeldDown);
} catch(SpamDetected $e) {
    // Do stuff
}

您可以轻松地添加自己的检查。它们必须实现 Inspection 接口。其结构如下

interface Inspection
{
    /**
     * @param string $text
     * @return void
     */
    public function detect(string $text);
}