这是我提出的代码行:
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,我想知道数组中单词出现的次数。不幸的是,输出并不是我真正需要的。有什么建议吗?
答案 0 :(得分:1)
我假设你想要一个带有单词频率的数组。
首先,将字符串转换为小写并从文本中删除所有标点符号。这样你就不会得到“但是”,“但是”和“但是”的条目,而只是“但是”有3个或更多用途的条目。
其次,使用str_word_count
,第二个参数为2,Mark Baker说要获取文本中的单词列表。这可能比我对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);