2011-01-12 6 views
5

Можно создать дубликат:
php: sort and count instances of words in a given stringПодсчитайте частоту слов в тексте?

Я ищу написать функцию PHP, которая принимает строку в качестве входных данных, разбивает ее на слова, а затем возвращает массив слов, отсортированных по частоте присутствия каждого слова.

Каков наиболее алгоритмически эффективный способ выполнения этого?

+0

я ожидаю, что это будет зависеть от размера текста. В любом случае, есть кучи таких парсеров, и наиболее эффективным способом программирования является повторное использование, а не собственное. Просто google 'частотный счетчик php' – dnagirl

+0

Это зависит от того, что вы подразумеваете под словом. «С» считается как слово, когда оно является притяжательным маркером? Как насчет того, когда это сокращение для «есть»? Как насчет других сокращений? Если вас просто интересует разделение пробелами или дефисами (например, T9 на вашем телефоне), вам, вероятно, лучше всего использовать встроенный материал, такой как Гордон, предложенный ниже. – Crisfole

+0

2 предыдущих вопроса из StackOverflow по той же теме. Должен быть полезен. [Count, как часто слово встречается в тексте в PHP] [1] [PHP: сортировать и подсчитывать экземпляры слов в данной строке] [2] [ 1]: http://stackoverflow.com/questions/2123236/count-how-often-the-word-occurs-in-the-text-in-php [2]: http://stackoverflow.com/ вопросы/2984786/PHP-сортировка и подсчет-экземпляры, из-слов-в-данной струна – Paul

ответ

22

Лучше всего такие:

Пример

$words = 'A string with certain words occuring more often than other words.'; 
print_r(array_count_values(str_word_count($words, 1))); 

Выход

Array 
(
    [A] => 1 
    [string] => 1 
    [with] => 1 
    [certain] => 1 
    [words] => 2 
    [occuring] => 1 
    [more] => 1 
    [often] => 1 
    [than] => 1 
    [other] => 1 
) 

маркировка CW, поскольку вопрос является дубликатом по крайней мере, два других вопросов, содержащих один и тот же ответ

Смежные вопросы