字计数器:似乎没有给出我需要的输出(PHP)

时间:2012-07-25 13:50:21

标签: php

这是我提出的代码行:

function Count($text)
        {    
            $WordCount = str_word_count($text);         

            $TextToArray = explode(" ", $text);
            $TextToArray2 = explode(" ", $text);

            for($i=0; $i<$WordCount; $i++)
            {
                $count = substr_count($TextToArray2[$i], $text);
            }
            echo "Number of {$TextToArray2[$i]} is {$count}";                                                   
        }

所以,这里会发生的是,用户将输入文本,句子或段落。通过使用substr_count,我想知道数组中单词出现的次数。不幸的是,输出并不是我真正需要的。有什么建议吗?

3 个答案:

答案 0 :(得分:1)

我假设你想要一个带有单词频率的数组。

首先,将字符串转换为小写并从文本中删除所有标点符号。这样你就不会得到“但是”,“但是”和“但是”的条目,而只是“但是”有3个或更多用途的条目。

其次,使用str_word_count,第二个参数为2,Mark Ba​​ker说要获取文本中的单词列表。这可能比我对preg_split的建议更有效。

然后遍历数组并将单词的值递增1。

foreach($words as $word)
  $output[$word] = isset($output[$word]) ? $output[$word] + 1 : 1;

答案 1 :(得分:0)

如果我正确理解了你的问题,这也应该解决你的问题

function Count($text) {
   $TextToArray = explode(" ", $text); // get all space separated words
   foreach($TextToArray as $needle) {
     $count = substr_count($text, $needle); // Get count of a word in the whole text
     echo "$needle has occured  $count times in the text";
   }
}

答案 2 :(得分:0)

$WordCounts = array_count_values(str_word_count(strtolower($text),2));
var_dump($WordCounts);