За последние 24 часа нас посетили 17186 программистов и 1611 роботов. Сейчас ищут 1237 программистов ...

Цикл в цикле

Тема в разделе "PHP для новичков", создана пользователем EkleP, 12 фев 2012.

  1. EkleP

    EkleP Активный пользователь

    С нами с:
    12 фев 2012
    Сообщения:
    2
    Симпатии:
    0
    Задача состоит в том, что бы пропарсить все страницы в каждой из известных категорий.
    Имеем массив категорий:
    Код (Text):
    1. $cat = array('cat_1', 'cat_2', 'cat_3', 'cat_4', 'cat_5');
    Ссылки для любой из категорий имеют следующий вид:
    Код (Text):
    1. http://www.example.com/index.php?cat=cat_1&page=1
    Последней страницы не существует! То есть начинает выводить: "Ничего не найдено!".
    Вот, что написал я:
    Код (Text):
    1. $cat = array('cat_1', 'cat_2', 'cat_3', 'cat_4', 'cat_5');
    2. foreach ($cat as $_cat) {
    3.   for ($page = 0; $resp = 1; ++$page) {
    4.       $content = file_get_contents('http://www.example.com/index.php?cat='.$_cat.'&page='.$page);
    5.       if (preg_match('#Ничего не найдено!#', $content)) {
    6.         $resp = 1;
    7.       }
    8.       else {
    9.         // Парсим страницу
    10.       }
    11.   }
    12. }
    Но всегда парсит только одну категория, то есть выводит 5 массивов с одними и теми же данными.
    Буду благодарен за любую помощь, спасибо!
     
  2. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    Код (PHP):
    1. foreach(/* ... */)
    2. {
    3.     $i = 0;
    4.     while(true)
    5.     {
    6.         $c = file_get_contents(/* ... */);
    7.         if( preg_match(/* ... */) )
    8.         {
    9.           break;
    10.         }
    11.         
    12.         // parse page
    13.         
    14.         $i++;
    15.     }
    16. } 
    гуд?
     
  3. EkleP

    EkleP Активный пользователь

    С нами с:
    12 фев 2012
    Сообщения:
    2
    Симпатии:
    0
    Да, спасибо большое!)
    Тема закрыта.
     
  4. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    foreach справится или for, зачем тут их 2?
     
  5. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    по логике автора форыч итерирует текстовые называния категорий, а фор - номера страниц до момента пока страницы не закончатся. в чем вопрос? можно оставить фор, его тоже можно рвать по брэйку.