在PHP中查找重复的单词而不指定单词本身

时间:2012-12-26 04:16:27

标签: php regex repeat words

我一直在为我想做的项目考虑一些事情,我不是一个先进的用户而且我只是在学习。不知道这是否可能:

假设我们有100个html文档,其中包含许多表格和文本。

问题一是:是否有可能分析所有这些文本并找到重复的单词并计算它?。

是的,这可能与某些功能有关,但这就是问题所在:如果我们不知道将要找到的单词怎么办?也就是说,我们必须告诉代码一个词的含义。

例如,假设一个单词是七个字符的联合,那么想法就是找到其他类似的模式并提及它。最好的方法是什么?

非常感谢你。

示例:

搜索:下一个短语上的五个字符模式:

文字一:

  

“海洋不要破坏”

文字二:

  

“海洋是咸水的身体”

结果

Takes 1 
Break 1
water 1
Ocean 2

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:7)

function get_word_counts($phrases) {
   $counts = array();
    foreach ($phrases as $phrase) {
        $words = explode(' ', $phrase);
        foreach ($words as $word) {
          $word = preg_replace("#[^a-zA-Z\-]#", "", $word);
            $counts[$word] += 1;
        }
    }
    return $counts;
}

$phrases = array("It takes an ocean of water not to break!", "An ocean is a body of saline water, or so I am told.");

$counts = get_word_counts($phrases);
arsort($counts);
print_r($counts);

<强>输出

Array
(
    [of] => 2
    [ocean] => 2
    [water] => 2
    [or] => 1
    [saline] => 1
    [body] => 1
    [so] => 1
    [I] => 1
    [told] => 1
    [a] => 1
    [am] => 1
    [An] => 1
    [an] => 1
    [takes] => 1
    [not] => 1
    [to] => 1
    [It] => 1
    [break] => 1
    [is] => 1
)

修改
根据@Jack的评论更新以处理基本标点符号。