Здравствуйте. Работаю с Denwer, скачала пакет расширений (http://www.denwer.ru/packages/php5.html), чтобы работал cURL, установила, вроде, всё нормально. Используется библиотека "simple_html_dom". Код парсит сайт (на русском), находит заголовок страницы, затем весь текст со страницы (где $data - массив из элементов html-страницы): Код (Text): ... $data = str_get_html(request($url)); ... $title=count($data->find('title'))?strip_tags($data->find('title',0)->plaintext):'';//название страницы $text=strip_tags($data->plaintext);//текст со страницы Здесь всё нормально, в переменных то, что надо, проверяла. Затем нахожу все слова в тексте: Код (Text): $allwords=str_word_count($text,1); //массив, содержащий все слова Вот что получается (текст на картинке - спарсенный текст, допустим, именно в нём нужно найти все слова): Раньше (до переустановки Денвера) функция работала как надо, то есть русские слова находились. Проблема начинается именно с этой функции... Есть мысль, что виновата кодировка. Но я перепробовала всё, до чего додумалась: и в phpMyAdmin меняла кодировки, и в самом скрипте, в основном, использовала UTF-8 и CP1251 (пробовала из одной в другую и наоборот), но бесполезно. Я уже замучилась =С Почему так происходит и что нужно сделать, чтобы не происходило? PS: если смущает размер текста, то и с "мелкими" то же самое =С (Надеюсь, тема подходит под раздел =\) Добавлено спустя 33 минуты 21 секунду: О! Лол... Так.... Вот уж не знаю, что за фигня вдруг произошла с этой функцией, потому что раньше и правда именно таким образом: Код (Text): $allwords=str_word_count($text,1); //массив, содержащий все слова находились все слова, в том числе и русские... Но я сделала вот так: Код (Text): $allwords=str_word_count($text,1,'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя'); и что-то зафурычило как надо: Ах, да... Не удивляйтесь процентам - вывожу процентное отношение встречи слов в тексте, а не их количество. Если ещё есть варианты по этому непонятному для меня происшествию, прошу предложить свои версии =\ Ну или как улучшить это, чтобы не перечислять весь алфавит? Может, в настройках сервера чего-то не хватает?
Не могла она работать ранее без $charlist 3 аргумента функции. Сейчас то юник хромает у пыха, а ранее так вообще папандос был, так, что вы ошибаетесь.
Нужна мультибайтовая функция-аналог, но такой, походу, нет для данного случая. Все, что могу предложить, это ознакомиться с http://stackoverflow.com/questions/8290537/is-php-str-word- ... ibyte-safe
Правильная мысль. И в вашем случае, скорее всего, что так оно и есть. Гадать где у вас прокол - это как пальцем в небо. Пробуйте задать внутреннюю кодировку: mb_internal_encoding(), в конце концов, попробовать использовать iconv(). Могу только посоветовать забыть про убогий Денвер и, как минимум, если не можете сами поднять сервер на локальной машине, то использовать нормальный инструмент для работы - Open Server P.S. А функция нормально работает