[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Цикл в цикле
EkleP
Задача состоит в том, что бы пропарсить все страницы в каждой из известных категорий.
Имеем массив категорий:
$cat = array('cat_1', 'cat_2', 'cat_3', 'cat_4', 'cat_5');

Ссылки для любой из категорий имеют следующий вид:
http://www.example.com/index.php?cat=cat_1&page=1

Последней страницы не существует! То есть начинает выводить: "Ничего не найдено!".
Вот, что написал я:

$cat = array('cat_1', 'cat_2', 'cat_3', 'cat_4', 'cat_5');
foreach ($cat as $_cat) {
for ($page = 0; $resp = 1; ++$page) {
$content = file_get_contents('http://www.example.com/index.php?cat='.$_cat.'&page='.$page);
if (preg_match('#Ничего не найдено!#', $content)) {
$resp = 1;
}
else {
// Парсим страницу
}
}
}


Но всегда парсит только одну категория, то есть выводит 5 массивов с одними и теми же данными.
Буду благодарен за любую помощь, спасибо!



Спустя 6 минут, 34 секунды (11.02.2012 - 23:37) wplounge написал(а):
Начнем хотя бы с того, что вот здесь
for ($page = 0; $resp = 1; ++$page) {

$rest = 1 будет всегда true, ибо = - это оператор присваивания

Спустя 2 минуты, 22 секунды (11.02.2012 - 23:39) TranceIT написал(а):
Цитата (EkleP @ 11.02.2012 - 20:30)
Но всегда парсит только одну категория, то есть выводит 5 массивов с одними и теми же данными.

Ну так а где же код из else? Ошибка то где-то там кроется...

Спустя 1 минута, 28 секунд (11.02.2012 - 23:41) EkleP написал(а):
for ($page = 0; $resp = 1; ++$page) {

resp уже писал как $resp < 1

Спустя 1 минута, 15 секунд (11.02.2012 - 23:42) EkleP написал(а):
Цитата (TranceIT @ 11.02.2012 - 20:39)
Цитата (EkleP @ 11.02.2012 - 20:30)
Но всегда парсит только одну категория, то есть выводит 5 массивов с одними и теми же данными.

Ну так а где же код из else? Ошибка то где-то там кроется...

В else мы просто парсим.

Спустя 7 минут, 4 секунды (11.02.2012 - 23:49) walerus написал(а):
if (preg_match('#Ничего не найдено!#iUsu', $content))

Попробуй так

Спустя 3 минуты, 39 секунд (11.02.2012 - 23:53) Placido написал(а):
wplounge же сказал, в чем проблема. Нужно заменить $resp = 1 на $resp == 1.

Спустя 13 минут, 25 секунд (12.02.2012 - 00:06) walerus написал(а):
Цитата (Placido @ 11.02.2012 - 20:53)
wplounge же сказал, в чем проблема. Нужно заменить $resp = 1 на $resp == 1.

Это тут не причем, у него перебираются ВСЕ страницы, пока не будет найдено - "Ничего не найдено!".

Код немного исправил.
<?php

$cat = array('cat_1', 'cat_2', 'cat_3', 'cat_4', 'cat_5');
$page = 0;
foreach ($cat as $_cat)
{
$get_page = true;

while($get_page)
{
// получам страницу
$content = file_get_contents('http://www.example.com/index.php?cat='.$_cat.'&page='.$page);
if (preg_match('#Ничего не найдено!#iUsu', $content))
{
// Указываем что парсить более не нужно, и переходим к следующему каталогу
$get_page = false;
$page = 0;
}
else
{
// Парсим страницу
$page++;
}

}
}

Спустя 3 минуты, 14 секунд (12.02.2012 - 00:09) Placido написал(а):
Цитата (walerus @ 11.02.2012 - 23:06)
Это тут не причем, у него перебираются ВСЕ страницы, пока не будет найдено - "Ничего не найдено!".

Да, согласен. Причина не в этом.

Спустя 10 минут, 29 секунд (12.02.2012 - 00:20) EkleP написал(а):
walerus
Спасибо! Это решило мою проблему! Тема закрыта.
Все, еще раз огромное спасибо! user posted image

Спустя 16 минут, 51 секунда (12.02.2012 - 00:37) EkleP написал(а):
Оффтопик. В регулярных выражениях
preg_match('#Ничего не найдено!#iUsu', $content)
это самое iUsu это модификаторы?

Спустя 1 час, 31 минута, 9 секунд (12.02.2012 - 02:08) walerus написал(а):
EkleP Они самые ), модификаторы )

Спустя 1 час, 59 минут, 3 секунды (12.02.2012 - 04:07) EkleP написал(а):
Спс)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.