Модераторы: Aliance, skyboy, MoLeX, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как посчитать количество повторов слов в тексте 
V
    Опции темы
americanets
Дата 11.4.2007, 20:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1100
Регистрация: 27.9.2006

Репутация: 1
Всего: 12



собрал текст со страницы, убрал HTML теги, как посчитать количество повторов слов в этом тексте а потом все вывести в таблицу
слово | количество повторов


--------------------
Пусть популярную музыку слушают те, среди кого она популярна
PM   Вверх
SelenIT
Дата 11.4.2007, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 8
Всего: 401



explode + array_count_values?


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
Shur
Дата 11.4.2007, 20:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 5.3.2007
Где: Украина, Киев

Репутация: нет
Всего: нет



Попробуйте так:
$content - ваш текст в _строке_.
Код

$words = preg_split('/\s+/s', trim($content));
        $word_statistic = array_count_values($words); // подсчет числа повторений каждого слова
        foreach ($word_statistic as $word => $count) { // пишем в таблицу...



Спасибо большое за код SelenITу.

У меня был похожий вопрос, помогли.
PM MAIL WWW ICQ   Вверх
mishaSL
Дата 11.4.2007, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1046
Регистрация: 10.1.2007
Где: Санкт-Петербург

Репутация: 9
Всего: 54



Вот пример:
Код

<?php
$text = 'много много текста это текст текст';
$word = 'текст';
$arr = array();
print 'слово &laquo;'.$word.'&raquo; встречается: '.preg_match_all('#\b'.preg_quote($word).'\b#is', $text, $arr).' раз(а)';
?>


Также можно воспользоваться функцией substr_count, но нужно учитывать, что она ищет совтадение подстроки, а не слов.


--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
americanets
Дата 12.4.2007, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1100
Регистрация: 27.9.2006

Репутация: 1
Всего: 12



да спасибо разобрался сделал 

Код

preg_match_all('/\w+/s', $content, $words); // разбивка на слова
$word_statistic = array_count_values($words[0]); // подсчет числа повторений каждого слова
print "<table width=\"500\" border=\"1\" cellspacing=\"1\" cellpadding=\"1\">";
foreach ($word_statistic as $word => $count) {
print "  <tr><td>$word</td><td>$count</td></tr>";
//print_r ($word_statistic);

} 
print "</table>";


единственное не знаю как теперь сделать чтоб выше ставились те у которых больше совпадений


--------------------
Пусть популярную музыку слушают те, среди кого она популярна
PM   Вверх
SelenIT
Дата 12.4.2007, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 8
Всего: 401



americanets, попробуйте перед выводом массива сделать ему arsort.


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
americanets
Дата 12.4.2007, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1100
Регистрация: 27.9.2006

Репутация: 1
Всего: 12



SelenIT, спасибо , то что надо, а как посчитать общее количество слов в тексте , делаю так 

$count=count($words);
print $count; 
результат 1 


--------------------
Пусть популярную музыку слушают те, среди кого она популярна
PM   Вверх
SelenIT
Дата 12.4.2007, 17:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 8
Всего: 401



count($words[0]) - массив-то двумерный. Можно при отладке сделать print_r($words) для наглядности...


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
americanets
Дата 12.4.2007, 20:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1100
Регистрация: 27.9.2006

Репутация: 1
Всего: 12



спасибо, заработало, теперь пытаюсь избавиться от мусора который дает заголовок при открытии страницы через fsockopen , а именно 

Код

HTTP/1.1 200 OK
Date: Thu, 12 Apr 2007 18:08:14 GMT
Server: Apache/1.3.33 (Win32) PHP/4.4.4
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html


открыл топик http://forum.vingrad.ru/topic-145789/ancho...y1096415/0.html , просто вырезать не совсем правильно, данные могут быть различны не поможете как с этим быть ?

Это сообщение отредактировал(а) americanets - 12.4.2007, 21:11


--------------------
Пусть популярную музыку слушают те, среди кого она популярна
PM   Вверх
americanets
Дата 13.4.2007, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1100
Регистрация: 27.9.2006

Репутация: 1
Всего: 12



не работает на сервере, считает только английские слова, 


--------------------
Пусть популярную музыку слушают те, среди кого она популярна
PM   Вверх
mishaSL
Дата 13.4.2007, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1046
Регистрация: 10.1.2007
Где: Санкт-Петербург

Репутация: 9
Всего: 54



americanets, поставьте эту строку в начало скрипта:
Код

setlocale(LC_ALL, "ru_RU.CP1251");



--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
americanets
Дата 13.4.2007, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1100
Регистрация: 27.9.2006

Репутация: 1
Всего: 12



спасибо, все заработало, 

уже отыскал где 
Код

preg_match_all('/\w+/s', $content, $words); // разбивка на слова

но по другому пытался сделать 


--------------------
Пусть популярную музыку слушают те, среди кого она популярна
PM   Вверх
mishaSL
Дата 13.4.2007, 18:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1046
Регистрация: 10.1.2007
Где: Санкт-Петербург

Репутация: 9
Всего: 54



Такой вопрос часто возникает. Если пользуетесь регулярными выражениями и в них необходимо работать с русскими символами не забывайте правильно определить локаль, это не будет лишним  smile 

Если вопрос решен, то не забывайте помечать его как решенным smile 


--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
americanets
Дата 16.4.2007, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1100
Регистрация: 27.9.2006

Репутация: 1
Всего: 12



спасибо еще раз, все сделал , есть еще аопросы но пока разбираюсь smile 


--------------------
Пусть популярную музыку слушают те, среди кого она популярна
PM   Вверх
CyClon
Дата 17.4.2007, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 3.12.2005

Репутация: 1
Всего: 4



Использовать регулярные выражения там, где можно обойтись без них - дурной тон. Они вызываю большую нагрузку по сравнению с другими функциями.

Слова можно получить так:

Код
$words = explode(' ', $string);


В итоге задачу можно решить:

Код
$words = explode(' ', $string);
$counts = array_count_values($words);

print_r($counts);



--------------------
user posted image
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Тексты | Следующая тема »


 




[ Время генерации скрипта: 0.0666 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.