我正在尝试阻止垃圾邮件,其中很多都是反复出现的字词,有没有办法检查字符串以查看字符串中是否有重复的短语?
$string = 'Hello ! Hello ! Hello ! Hello !";
谢谢,
答案 0 :(得分:3)
substr_count
就可以了。如果您不知道什么是垃圾邮件字,可以使用str_word_count
和array_count_values
:
$string = 'Hello! Hello! Hello! Hello! Lorem Ipsum';
$words = str_word_count($string, 1);
$count = array_count_values($words);
print_r($count);
这会给你这个:
Array
(
[Hello] => 4
[Lorem] => 1
[Ipsum] => 1
)
您可以sort()
此数组并获取字符串中最常用单词的排名。您还应该检查停用词(例如“和”,“或”,“我”等)。
答案 1 :(得分:1)
快速的Google搜索给了我:
http://php.net/manual/en/function.substr-count.php
然而,有更好的反垃圾邮件的想法。像Captchas一样。人类垃圾邮件发送者很难捕获。他们会找到一个解决你的字计数器的方法。也许你应该考虑像Youtube那样的基于用户的垃圾邮件报告的方法。
答案 2 :(得分:0)
您可以尝试substr_count(): http://php.net/manual/en/function.substr-count.php
$string = 'hello ! hello ! hello ! hello !';
echo substr_count($string, 'hello');
当然,如果你想检查你的字符串中的任何单词是否多次出现......那么效率会降低很多。您可能需要跟踪“已检查单词”列表,并且对于字符串中每个尚未检查的单词,检查它是否多次出现。
LIke Binarious提到,验证码将是阻止垃圾邮件的更好方法; - )