Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Задача - регулярки, массивы
 
 автор: ДобрыйУхх   (05.02.2010 в 21:29)   письмо автору
 
 

Привет Всем!

Есть задание, решение которого на мой взгляд не оптимально и как его решить как то по другому?

/* ЗАДАНИЕ
Возьмите любой объемный текст, содержащий несколько предложений,
и поместите каждое предложение текста в элементы массива $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>";

  Ответить  
 
 автор: heed   (05.02.2010 в 23:20)   письмо автору
 
   для: ДобрыйУхх   (05.02.2010 в 21:29)
 

похоже на два preg_split()
, один так , другой в цикле

, но что если в тексте будут инициалы (А. С. Пушкин) как не защитать их предложениями ?

  Ответить  
 
 автор: ДобрыйУхх   (05.02.2010 в 23:32)   письмо автору
 
   для: heed   (05.02.2010 в 23:20)
 

Спасибо)), точно ,забыл про эту функцию..

Вроде бы не засчитывает (А. С. Пушкин) как предложение, я проверял), он засчитывает их отдельными словами)

  Ответить  
 
 автор: ~AquaZ~   (06.02.2010 в 13:36)   письмо автору
 
   для: ДобрыйУхх   (05.02.2010 в 21:29)
 

Если массив правильно пронумерован (0, 1, 2, ...) то ненадо использовать foreach.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования