PHP检查字符串中是否有重复的部分

时间:2012-04-23 13:13:48

标签: php arrays string spam

我正在尝试阻止垃圾邮件,其中很多都是反复出现的字词,有没有办法检查字符串以查看字符串中是否有重复的短语?

$string = 'Hello ! Hello ! Hello ! Hello !";

谢谢,

3 个答案:

答案 0 :(得分:3)

当您知道自己在寻找什么时,

substr_count就可以了。如果您不知道什么是垃圾邮件字,可以使用str_word_countarray_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提到,验证码将是阻止垃圾邮件的更好方法; - )