fork download
  1. <?php
  2. //Топ 3 самых часто встречающихся слов и словосочетаний в тексте(из 2-3-х слов)
  3.  
  4. $stopWords = array('и', 'у', 'к', 'с', 'о', 'от', 'в', 'же', 'из', 'на', 'что');
  5. $input = 'Эта функция сортирует массив в обратном порядке таким образом, что
  6. сохраняются отношения между ключами и значениями. Сохраняются отношения и
  7. сохраняются отношения и еще сохраняются отношения и опять сохраняются отношения.';
  8.  
  9. //Удаляем лишнее и разбиваем текст на слова
  10. $input = mb_strtolower($input);
  11. $input = preg_replace('/[\\r\\n]/', ' ', $input);
  12. $input = preg_replace('/[,]/', '', $input);
  13. $input = preg_replace('/[.]/', ' .', $input);
  14. $words = preg_split('/ /', $input, 0, PREG_SPLIT_NO_EMPTY);
  15.  
  16. foreach ($words as $key => $word) {
  17. //Прерываем цикл на последнем слове.
  18. if ($key == (count($words) - 1)) {
  19. break;
  20. }
  21. //Если текущее слово из списка стоп слов или точка - переходим к следуещему
  22. if ((array_search($word, $stopWords) !== false) || $word == '.') {
  23. continue;
  24. }
  25. $nextKey = $key + 1;
  26. //Если следующее слово из стоп слов или точка переходим к следуещему слову
  27. if ((array_search($words[$nextKey], $stopWords) !== false) || $words[$nextKey] == '.') {
  28. continue;
  29. }
  30. //Если же текущее и следующее слово в порядке составляем словосочетание из 2-х слов
  31. $twoWords[] = $word . ' ' . $words[$nextKey];
  32. }
  33. print_r($words);
  34. print_r($twoWords);
  35.  
  36. //Считаем, удаляем все что было найдено 1 раз и стоп слова, сортируем
  37. //$countWords1 = array_diff($words, $stopWords);
  38. //$countWords1 = array_diff(array_count_values($words), array(1));
  39. //$countWords2 = array_diff(array_count_values($twoWords), array(1));
  40. //$countWords3 = array_diff(array_count_values($threeWords), array(1));
  41.  
  42. //arsort($countWords1, SORT_NUMERIC);
  43. //arsort($countWords2, SORT_NUMERIC);
  44. //arsort($countWords3, SORT_NUMERIC);
  45.  
  46. //print_r($countWords1);
  47. //print_r($countWords2);
  48. //print_r($countWords3);
Success #stdin #stdout 0.01s 20568KB
stdin
Standard input is empty
stdout
Array
(
    [0] => эта
    [1] => функция
    [2] => сортирует
    [3] => массив
    [4] => в
    [5] => обратном
    [6] => порядке
    [7] => таким
    [8] => образом
    [9] => что
    [10] => сохраняются
    [11] => отношения
    [12] => между
    [13] => ключами
    [14] => и
    [15] => значениями
    [16] => .
    [17] => сохраняются
    [18] => отношения
    [19] => и
    [20] => сохраняются
    [21] => отношения
    [22] => и
    [23] => еще
    [24] => сохраняются
    [25] => отношения
    [26] => и
    [27] => опять
    [28] => сохраняются
    [29] => отношения
    [30] => .
)
Array
(
    [0] => эта функция
    [1] => функция сортирует
    [2] => сортирует массив
    [3] => обратном порядке
    [4] => порядке таким
    [5] => таким образом
    [6] => сохраняются отношения
    [7] => отношения между
    [8] => между ключами
    [9] => сохраняются отношения
    [10] => сохраняются отношения
    [11] => еще сохраняются
    [12] => сохраняются отношения
    [13] => опять сохраняются
    [14] => сохраняются отношения
)