Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Есть ли аналог функции str_word_count ?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
alnik-75
Отправлено: 01 Апреля, 2015 - 22:59:16
Post Id



Посетитель


Покинул форум
Сообщений всего: 338
Дата рег-ции: Сент. 2012  
Откуда: Гродно, Беларусь


Помог: 0 раз(а)




Уважаемые форумчане!
Есть замечательная функция str_word_count, которая строку в массив со словами, входящими в состав этой строки. Я так понимаю, что данная функция корректно отрабатывает со строками, содержащие слова на латинице. Даже, если предложение частичной состоит из русских слов, а частично из слов на латинице, то в возращаемом массиве находятся только последние слова.

Вопрос: как быть , если строка - это предложение на русском языке?
 
 Top
Faraon-san
Отправлено: 01 Апреля, 2015 - 23:12:44
Post Id



Посетитель


Покинул форум
Сообщений всего: 318
Дата рег-ции: Сент. 2013  


Помог: 8 раз(а)




наверное только разбить на массив по пробелу и посчитать длину массива.
 
 Top
alnik-75
Отправлено: 01 Апреля, 2015 - 23:29:55
Post Id



Посетитель


Покинул форум
Сообщений всего: 338
Дата рег-ции: Сент. 2012  
Откуда: Гродно, Беларусь


Помог: 0 раз(а)




Faraon-san пишет:
наверное только разбить на массив по пробелу и посчитать длину массива.

разделителями слов в предложении могут быть не только пробелы, но и точки, запятые, дефисы, знаки вопроса и т.д.
 
 Top
Faraon-san
Отправлено: 01 Апреля, 2015 - 23:37:44
Post Id



Посетитель


Покинул форум
Сообщений всего: 318
Дата рег-ции: Сент. 2013  


Помог: 8 раз(а)




решение конечно не 100%, но можно точки, запятые, дефисы, знаки вопроса и т.д. заменить на пробелы, потом где 2 пробела и более заменить на один, а потом уже разбивать на массив.
 
 Top
DeepVarvar Супермодератор
Отправлено: 02 Апреля, 2015 - 00:07:33
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




PHP:
скопировать код в буфер обмена
  1. $words = array();
  2. preg_match_all(/[a--яёЁ]{3,}/iu, $words);
Не проверял.
 
 Top
lastdays
Отправлено: 02 Апреля, 2015 - 06:19:38
Post Id



Частый гость


Покинул форум
Сообщений всего: 221
Дата рег-ции: Март 2013  


Помог: 7 раз(а)




У меня такой костыль работает Радость

PHP:
скопировать код в буфер обмена
  1.  
  2. header("Content-type: text/html; charset=windows-1251");
  3.  
  4. $str = "Hello WORLD сегодня!";
  5. $str =  iconv("UTF-8", "windows-1251", $str);
  6.  
  7. for ( $i = 192, $list = "Ёё"; $i < 256; $list .= chr($i), $i++ );
  8. $rus = str_word_count($str, 1, $list);
  9.  
  10. var_dump($rus);
  11.  


Результат:
CODE (html):
скопировать код в буфер обмена
  1. array (
  2.   0 => 'Hello',
  3.   1 => 'WORLD',
  4.   2 => 'сегодня',
  5. )
 
 Top
alnik-75
Отправлено: 02 Апреля, 2015 - 06:23:31
Post Id



Посетитель


Покинул форум
Сообщений всего: 338
Дата рег-ции: Сент. 2012  
Откуда: Гродно, Беларусь


Помог: 0 раз(а)




DeepVarvar пишет:
PHP:
скопировать код в буфер обмена
  1. $words = array();
  2. preg_match_all(/[a--яёЁ]{3,}/iu, $words);
Не проверял.


Спасибо, DeepVarvar!!!!!
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB