flexic / spam-filter
PHP反垃圾邮件过滤器
1.0.0
2022-10-09 16:23 UTC
Requires
- php: ^7.4
Requires (Dev)
- ergebnis/php-cs-fixer-config: ^3.0.2
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]
- 包的初始提交