|
|
|
| Привет Всем!
Есть задание, решение которого на мой взгляд не оптимально и как его решить как то по другому?
/* ЗАДАНИЕ
Возьмите любой объемный текст, содержащий несколько предложений,
и поместите каждое предложение текста в элементы массива $text так,
чтобы первое предложение оказалось в элементе с индексом 0 —
$text[0], второе в элементе с индексом 1 — $text[l] и т.д. Далее в
цикле foreach преобразуйте массив $text в двумерный массив таким
образом, чтобы в элементе $text[0] [0] хранилось первое слово первого
предложения, в элементе $text[0] [l] хранилось второе слово первого
предложения и т. д. Проконтролируйте результаты работы, отправив
дамп массива в окно браузера при помощи функции p r i n t r ().
*/
// Разбиение текста на предложения
preg_match_all('/^ [^\n]* \n?/xm', $content, $packet);
// Преобразование из 2-х мерный в 1 мерный массив по заданию
//(или делается как то по другому )
foreach ($packet as $key)
foreach ($key as $val)
$text[] = $val;
// Преобразование в двумерный массив с разбиением на слова
foreach ($text as $key=> $val)
{
// Разбиение строки на слова
preg_match_all('/[^\w]* [\w]+ [^\w]*/x', $val, $str);
// Удаление одномерного элемента массива со значением напр. "предложение"
unset($text[$key]);
// Создание двумерного элемента массива со значением напр. "слово"
foreach ($str as $v)
foreach ($v as $w)
$text[$key][] = $w;
}
echo "<pre>"; print_r($text); echo "</pre>";
|
| |
|
|
|
|
|
|
|
для: ДобрыйУхх
(05.02.2010 в 21:29)
| | похоже на два preg_split()
, один так , другой в цикле
, но что если в тексте будут инициалы (А. С. Пушкин) как не защитать их предложениями ? | |
|
|
|
|
|
|
|
для: heed
(05.02.2010 в 23:20)
| | Спасибо)), точно ,забыл про эту функцию..
Вроде бы не засчитывает (А. С. Пушкин) как предложение, я проверял), он засчитывает их отдельными словами) | |
|
|
|
|
|
|
|
для: ДобрыйУхх
(05.02.2010 в 21:29)
| | Если массив правильно пронумерован (0, 1, 2, ...) то ненадо использовать foreach. | |
|
|
|