Подсчитайте, как часто слово встречается в тексте в PHP

В php мне нужно загрузить файл и получить все слова и повторить слово и количество раз, когда каждое слово отображается в тексте (мне также нужно, чтобы они отображались в порядке убывания наиболее используемых слов сверху) ★ ✩

Solutions Collecting From Web of "Подсчитайте, как часто слово встречается в тексте в PHP"

Вот пример:

$text = "A very nice únÌcÕdë text. Something nice to think about if you're into Unicode."; // $words = str_word_count($text, 1); // use this function if you only want ASCII $words = utf8_str_word_count($text, 1); // use this function if you care about i18n $frequency = array_count_values($words); arsort($frequency); echo '<pre>'; print_r($frequency); echo '</pre>'; 

Выход:

 Array ( [nice] => 2 [if] => 1 [about] => 1 [you're] => 1 [into] => 1 [Unicode] => 1 [think] => 1 [to] => 1 [very] => 1 [únÌcÕdë] => 1 [text] => 1 [Something] => 1 [A] => 1 ) 

И utf8_str_word_count() , если вам это нужно:

 function utf8_str_word_count($string, $format = 0, $charlist = null) { $result = array(); if (preg_match_all('~[\p{L}\p{Mn}\p{Pd}\'\x{2019}' . preg_quote($charlist, '~') . ']+~u', $string, $result) > 0) { if (array_key_exists(0, $result) === true) { $result = $result[0]; } } if ($format == 0) { $result = count($result); } return $result; } 
 $ words = str_word_count ($ text, 1);
 $ word_frequencies = array_count_values ​​($ words);
 arsort ($ word_frequencies);
 print_r ($ word_frequencies);

Эта функция использует регулярное выражение для поиска слов (вы можете изменить его, в зависимости от того, что вы определяете как слово)

 function count_words($text) { $output = $words = array(); preg_match_all("/[A-Za-z'-]+/", $text, $words); // Find words in the text foreach ($words[0] as $word) { if (!array_key_exists($word, $output)) $output[$word] = 0; $output[$word]++; // Every time we find this word, we add 1 to the count } return $output; } 

Это повторяется над каждым словом, создавая ассоциативный массив (со словом в качестве ключа), где значение относится к вхождениям каждого слова. (например, $ output ['hello'] = 3 => привет в 3 раза в тексте).

Возможно, вы захотите изменить функцию, чтобы иметь дело с нечувствительностью к регистру (т.е. «привет» и «привет» – это не одно и то же слово, согласно этой функции).

 echo count(explode('your_word', $your_text));