Покинул форум
Сообщений всего: 3
Дата рег-ции: Авг. 2011
Помог: 0 раз(а)
Есть какой либо текст нужно найти 5 наиболее часто встречающихся слов в тексте.
На ум только приходит забивать его в массив и потом уже каждое слово искать в тексте.Но мне кажется это будет довольно ресурсоемко.
вот пример как нужно сделать http://tekto.biz/sick/ns.php.
Готовое решение не нужно (хотя если есть не откажусь), хотя бы укажите в какую сторону копать.
White
Отправлено: 09 Августа, 2011 - 23:35:02
Частый посетитель
Покинул форум
Сообщений всего: 830
Дата рег-ции: Июнь 2011 Откуда: Днепропетровск
DeepVarvar Вы немного не поняли суть вопроса, тем более substr-count это выполнить не получилось бы ведь он посчитал бы и кирпич и кирпичный хотя два разных слова.
Покинул форум
Сообщений всего: 830
Дата рег-ции: Июнь 2011 Откуда: Днепропетровск
Помог: 28 раз(а)
massqwest только это не готовая функция. советую сначала заменить все спецсимволы на пробелы оставив только буквы, цифры и знак "-", и если это не критично привести к единому регистру.
massqwest пишет:
кирпич и кирпичный
если необходимо строить облако тегов, я бы предпочел, чтобы они воспринимались как одно слово.
----- if(time()>1356048000) die();
Petro
Отправлено: 10 Августа, 2011 - 10:53:13
Гость
Покинул форум
Сообщений всего: 126
Дата рег-ции: Март 2010
Помог: 2 раз(а)
Возник вопрос почему количество букв не соответствует количеству букв в слове?
$text="Поезія Поезія Поезія Поезія Поезія Поезія А. Малишка в уяві кожного українця асоціюється з піснею, адже він писав пісні — жанр, який мав чимало прихильників, особливо якщо це ліричні пісні. Мудрі, ніжні, мелодійні вірші зворушують серце й уяву.
Таємницю зачарованих мелодій-віршів А. Малишка Олесь Гончар пояснював так: Народнопісенна основа в його творчості не стилізація, то його власне поетичне мислення, органічна поетова образність, що зливається з художнім розливом образності народної.
Ця народнопісенна основа зумовила особливе ставлення поета до природи. Природа не стільки фон почуттів ліричного героя, скільки могутня стихія, гармонійною частиною якої є людина. Природа одному мати, другому — мачуха, — стверджує народна мудрість. Для А. Малишка природа була, безперечно, рідною матір'ю матір'ю матір'ю матір'ю матір'ю матір'ю. У гармонійній красі природи він знаходив невичерпне джерело натхнення: і тоді з'являлися на білий світ слова, що найповніше, найточніше відображали найтонші нюанси почуттів.
?>
Вот что выводит
index=Поезія--количество букв-->12
value=6
index=матір'ю--[color=red]количество букв-->13
value=6
index=Малишка--количество букв-->14
value=3
index=А--количество букв-->2
value=3
index=пісні--количество букв-->10
value=2
----- Нет ничего более постоянного, чем временное.
White
Отправлено: 10 Августа, 2011 - 11:02:45
Частый посетитель
Покинул форум
Сообщений всего: 830
Дата рег-ции: Июнь 2011 Откуда: Днепропетровск
Помог: 28 раз(а)
Petro строковые функции как правило работают с ANSI а не мультиязычными кодировками, а в ANSI одному символу соответствует один байт, вот strlen и считает байты.
----- if(time()>1356048000) die();
DeepVarvar
Отправлено: 10 Августа, 2011 - 11:20:15
Активный участник
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Помог: 353 раз(а)
White пишет:
вот strlen и считает байты
Латиница, цифры и знаки препинания "влезают" в кол-во комбинаций однобайтной строки.
Для остальных языковых символов не хватает места, поэтому каждый символ состоит из двух байт: первый означает принадлежность к языку, второй собственно код символа.
Многие наверное знают что если смс на телефоне писать транслитом - влезает в 2 раза больше букв в один смс-сегмент.
Корни растут оттуда же
Покинул форум
Сообщений всего: 1117
Дата рег-ции: Июль 2011 Откуда: от верблюда)
Помог: 28 раз(а)
DeepVarvar пишет:
если смс на телефоне писать транслитом - влезает в 2 раза больше букв
угу, угу даже по телевизору недавно говорили про количество букв в русском смс
----- Всё гениальное - просто
И ещё проще, если ты - индиго
Petro
Отправлено: 10 Августа, 2011 - 11:52:14
Гость
Покинул форум
Сообщений всего: 126
Дата рег-ции: Март 2010
Помог: 2 раз(а)
Точно, давно я не писал транслитом
Значит делить на 2 и округлять в меньшую сторону.
floor(strlen($index)/2)
Cпасибо огромное!
----- Нет ничего более постоянного, чем временное.
massqwest
Отправлено: 10 Августа, 2011 - 12:37:42
Новичок
Покинул форум
Сообщений всего: 3
Дата рег-ции: Авг. 2011
Помог: 0 раз(а)
White пишет:
massqwest только это не готовая функция. советую сначала заменить все спецсимволы на пробелы оставив только буквы, цифры и знак "-", и если это не критично привести к единому регистру.
massqwest пишет:
кирпич и кирпичный
если необходимо строить облако тегов, я бы предпочел, чтобы они воспринимались как одно слово.
Да уже вот занимаюсь , мне именно и надо было чтобы выбирало точно.
DeepVarvar
Отправлено: 10 Августа, 2011 - 13:34:59
Активный участник
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Помог: 353 раз(а)
Petro пишет:
Значит делить на 2 и округлять в меньшую сторону.
Зачем? Есть mb_strlen();
Только вот опять проблемка - если мерить mb_strlen("ПУШGQ") - то посчитает тоже неверно, выведет = 8.
Эта проблема в пхп все еще не пофиксена.
Хотя в Python, Java, JS и некоторых др. языках - все с этим в порядке.
К тем же проблеммным ф-циям можно отнести: substr и mb_substr - они же принимают ПОЗИЦИЮ СИМВОЛА в качестве аргумента.
Вот и режут символы пополам - на выходе кракозяблы.
Т.е. работает это правильно:
для substr и strlen - когда только однобайтные.
для mb_substr и mb_strlen - когда только многобайтные без цифр и знаков препинания.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.