|
|
|
| Есть задача преобразовать строку в массив. Но некоторые слова в строке отделены от других запятыми (знаки препинания). Например, надо преобразовать вот такую строку:
"вот, какие дела творятся в мире"
Используя функцию explode я создал такой код:
$text = "вот, какие дела творятся в мире!";
$ar = explode(" " & ", ", $text);
echo $ar;
|
Таким образом, в массиве оказались как слова со знаками препинания, так и слова одиночные.
Вопрос: как можно занести в массив только одиночные слова без знаков препинания?
Спасибо. | |
|
|
|
|
|
|
|
для: baston
(06.12.2009 в 16:11)
| | Во-первых print_r($ar); чтобы просмотреть массив. Во-вторых - объясните вот это:
" " & ", "
для чего и зачем? Вы полагаете что это работает? | |
|
|
|
|
|
|
|
для: sim5
(06.12.2009 в 16:20)
| | Полагал, что да, работает. Это осталось с тех пор, пока я не добавил восклицательный знак в конце строки. Использовал для поиска слов с запятой и с пробелами. Теперь понял, что бессмысленно. Достаточно было " ". | |
|
|
|
|
|
|
|
для: baston
(06.12.2009 в 16:11)
| | preg_match_all() | |
|
|
|
|
|
|
|
для: Trianon
(06.12.2009 в 16:26)
| | Воспользовался вашей подсказкой и вот что получилось:
$text = "вот, какие дела творятся в мире!";
preg_match_all ('/[а-яА-Я0-9]+/', $text, $arr, PREG_SET_ORDER);
foreach ($arr as $value)
{
echo $value, "<br>";
}
|
Не могу понять, почему выводится слово ARRAY, вместо вывода значений массива. | |
|
|
|
|
|
|
|
для: baston
(06.12.2009 в 18:35)
| | Документацию то по функции читали? А теперь еще раз. | |
|
|
|
|
|
|
|
для: neadekvat
(06.12.2009 в 18:37)
| | Читал и перечитывал. Если выводить массив на экран через print_r, то я вижу значения массива. А через foreach и echo - нет. Так в чем же моя ошибка? | |
|
|
|
|
|
|
|
для: baston
(06.12.2009 в 18:46)
| | поставьте вначале тег <PRE>
перед print_r() | |
|
|
|
|
|
|
|
для: Trianon
(06.12.2009 в 18:58)
| | Может быть я что-то недопонимаю, но что это мне дает? Я получил значения массива. Но почему не работает выражение через foreach?
П.С. Да, вроде вникаю, что значением массива являет Array.
Тогда как получить иначе нужные мне слова в массив?
П.С.2. Получаю двумерный массив, если правильно мыслю... Сейчас попробую узнать и сообразить, как вытащить эти значения. В документации написано, что обратиться можно типа так:
, где N - порядковый номер совпадения, а В - номер скобки.
Туго идет... | |
|
|
|
|
|
|
|
для: baston
(06.12.2009 в 19:09)
| | можно задать PREG_PATTERN_ORDER и взять сразу нужный массив. | |
|
|
|
|
|
|
|
для: Trianon
(06.12.2009 в 19:22)
| | Боже мой! Спасибо! Получилось, все-таки. Дотумкал:
$text = "вот, какие дела творятся в мире!";
preg_match_all ("/[а-яА-Я0-9]+/", $text, $arr, PREG_PATTERN_ORDER);
/*echo "<pre>";
print_r($arr);*/
foreach ($arr[0] as $value)
{
echo $value, "<br>";
}
|
| |
|
|
|