Имеем массив категорий:
$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 написал(а):
Начнем хотя бы с того, что вот здесь
$rest = 1 будет всегда true, ибо = - это оператор присваивания
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) | ||
Ну так а где же код из 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
Спасибо! Это решило мою проблему! Тема закрыта.
Все, еще раз огромное спасибо!
Спасибо! Это решило мою проблему! Тема закрыта.
Все, еще раз огромное спасибо!
Спустя 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 написал(а):
Спс)