|
|
|
| Попытка применить str_word_count к строке, содержащей текст, написанный русскими буквами, приводит к тому, что в выходной массив попадают одни обрывки слов и отдельные буквы.
Пример
<?php
$page_contents = "Однажды в студеную зимнюю пору я из лесу вышел - был сильный мороз";
$words_arr = str_word_count($page_contents, 1);
print "<PRE>";
print_r($words_arr);
print "</PRE>";
?>
|
Вот это получаю на выходе
Array
(
[0] => а
[1] => ы
[2] => в
[3] => е
[4] => з
[5] => м
[6] => р
[7] => з
[8] => ле
[9] => вы
[10] => ел
[11] => был
[12] => л
[13] => ы
[14] => м
[15] => р
[16] => з
)
|
Помогите, плз, кто чем может! | |
|
|
|
|
|
|
|
для: Holsten Bier
(08.08.2006 в 14:56)
| | $words_arr = explode(" ", $page_contents); | |
|
|
|
|
|
|
|
для: RV
(08.08.2006 в 15:06)
| | А если в тексте полно хлама, помимо пробелов, а нужно получить массив слов, содержащих только буквы, дефисы, знаки подчеркивания и цифры? | |
|
|
|
|
|
|
|
для: Holsten Bier
(08.08.2006 в 15:09)
| | А под хламом что имеется ввиду? Можно формализовать пробельные символы при помощи регулярных выражений
<?php
$words_arr = preg_split("|[\s]+|s", $page_contents);
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(08.08.2006 в 21:38)
| | Мне бы хотелось сделать аналог функции str_word_count(), которая у меня (пакет Денвер-2) почему-то не работает, точнее работает, но не корректно. Искомая функция должна излечь из строки все слова, а точнее последовательности символов содержащие буквы английского и русского алфавитов и содержащие (но не начинающиеся с них) символы "одиночная кавычка" и "дефис" (ну и возможно "апостроф"). То есть символы типа {}[]()=+&^%$#@!/><\:;~ не должны встречаться в слове. А слова могут иметь вид:
Я попробую предложенный вами вариант, похоже это единственное верное решение. Но все-таки не понятно, почему str_word_count() дала такой результат. Вы не могли бы мне объяснить?
И еще попутно вопрос: в перловых регулярных выражениях можно использовать любые ограничители (вы использовали '|')? | |
|
|
|
|
|
|
|
для: Holsten Bier
(09.08.2006 в 00:05)
| | Не корректность str_word_count() в чём выражается? | |
|
|
|
|
|
|
|
для: cheops
(09.08.2006 в 00:16)
| | В том, что в массив попадают не слова, а их отдельные части (см. первое сообщение). | |
|
|
|
|
|
|
|
|
для: cheops
(10.08.2006 в 17:36)
| | Я попробовал следующее:
<?php
$sentense = "Все попытки разложить текст на слова тщетны";
setlocale (LC_ALL, array ('ru_RU.CP1251', 'rus_RUS.1251'));
$words = str_word_count($sentense, 1);
echo "<PRE>";
print_r($words);
echo "</PRE>";
?>
|
И при этом получил интересный результат: при нескольких рефрешах страницы получал разный вывод:
и такой
Array
(
[0] => Все
[1] => п
[2] => пытк
[3] => р
[4] => зл
[5] => т
[6] => текст
[7] => н
[8] => сл
[9] => в
[10] => т
[11] => етны
)
|
и такой
Array
(
[0] => Вс
[1] => п
[2] => пы
[3] => л
[4] => с
[5] => н
[6] => сл
[7] => ны
)
|
вот собственно.
PS: Я, к сож., не знаю как правильно составить стоку для настройки локали. | |
|
|
|
|
|
|
|
для: Holsten Bier
(11.08.2006 в 03:08)
| | >PS: Я, к сож., не знаю как правильно составить стоку для настройки локали.
Это нужно у хостера выяснить - у всех по разному. | |
|
|
|
|
|
|
|
для: cheops
(11.08.2006 в 12:17)
| | Спасибо за помощь, спрошу у хостера. | |
|
|
|