И ещё один косяк PHP (str_word_count)
10.05.2011 технологии через жопу
Оказывается, функция str_word_count() работает только с латинскими символами. Если хотите обрабатывать тексты на других языках, потрудитесь написать в параметре charlist весь их алфавит. Красота.
Комментарии
Комментирование этой статьи закрыто.
« PHP: функция подсчёта слов в тексте Конкурс-марафон «Продам слона» »
Мутная какая-то функция. Чем что-то типа этого
count(explode(’ ‘, ‘считаем слова в этом предложении’));
не устраивает (если нужно только кол-во слов)?
*в первом аргументе explode в кавычках пробел стоит, но парсером вырезался
*Сорри, туплю, мой пример не совсем в тему.
Угу, не то считаешь.
Хотя я до сих пор не понял смысла этой функции=( И чем она отличается от explode. Только что разделитель не один, а несколько (цифры, точка, запятая…). Так по логике строку прогнать через регулярку (или строковыми функциями в цикле), заменив все нужные символы на один дефолтный разделитель – и уже заюзать тот же explode.
tulvit, могут быть еще точки, запятые, дефисы и т.д.
Кстати на счет кириллицы. С str_word_count() всё понятно – параметром передать. А как вот достучаться, скажем, до третьего символа кириллической строки? В латинице просто $str2. Аналогично интересует strtoupper(), strcasecmp() для кириллицы UTF-8. Желательно (но не обязательно) чтоб работало и на винде. Прямо сейчас мучаюсь над этим. Буду очень благодарен за ответ!
мда… Вместо $str2 следует читать $str [ 2 ] конечно.
О! Это я помню =)
mb_convert_case($string, MB_CASE_UPPER, ‘utf-8’);
Так в том-то и дело, что в документации по str_word_count() не указано, какие она символы считает разделителями, лучше уж в таком случае свой парсер приделать.
Юзай mb_strtoupper и т. п.
И установить для библиотеки mb_internal_encoding('UTF-8');
Точно, раньше не сталкивался – вот и не знал об mb_. Теперь капча получилась.
Матершинная она у тебя какая-то. Вот для чего нужны mb человеку, оказывается.