[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Цикл с условием
ArtemKrass
Всем привет!

Есть функция

function getPoselenie($townid, $id)
{
global $curl, $cookie_filename, $token, $nlreq, $timef;

//Проверка возможности фарма
$farminfo = 'http://ru1.grepolis.com/game/farm_town_info?action=claim_info&town_id='.$townid.'&h='.$token[1].'&json={"id":"'.$id.'","town_id":'.$townid.',"nlreq_id":'.$nlreq[1].'}&_='.$timef;
curl_setopt($curl, CURLOPT_URL, $farminfo);
curl_setopt($curl, CURLOPT_REFERER, 'http://ru1.grepolis.com/game/index?login=1');
curl_setopt($curl, CURLOPT_HTTPHEADER, array('X-REQUESTED-WITH: XMLHttpRequest'));
$html = curl_exec($curl);
//echo ($html);
preg_match ('#farm_next_claim_time\\\">(.*?)<\\\/span>#', $html, $ready);
print_r ($ready);
if ($ready[1] == "\u0433\u043e\u0442\u043e\u0432\u043e")
{
// Фарм поселений
//$id - ое поселение

$farm01 = 'http://ru1.grepolis.com/game/farm_town_info?action=claim_load&town_id='.$townid.'&h=' .$token[1];
$post = 'json={"target_id":"' . $id . '","claim_type":"normal","time":300,"town_id":"'.$townid.'","nlreq_id":0}';
curl_setopt($curl, CURLOPT_URL, $farm01 );
curl_setopt($curl, CURLOPT_REFERER, 'http://ru11.grepolis.com/game/index?login=1');
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, array('X-REQUESTED-WITH: XMLHttpRequest'));
curl_setopt($curl, CURLOPT_POSTFIELDS, $post);
$html = curl_exec($curl);
return $html;
continue;
}
}



и есть цикл

foreach ($posel as $posel1)
{
if (isset ($posel1['name']))
getPoselenie ($city[0]['id'], $posel1['id']);
}


В общем мне нужно перебрать массив $posel (там id нескольких поселений), вызывая функцию getPoselenie для каждого поселения...

Но также мне нужно выполнить условие (парсится страница и проверяется возможность фарма)...

По идее мне нужно выполнять сначала проверку возможности фарма и вывести print_r ($ready)...

А на деле получается наоборот, он сначала отправляет post а потом проверяет и выводит print_r ($ready); или ... не пойму что происходит...

Что не так???

Вот что я получаю после первого запуска скрипта:
Array ( [0] => farm_next_claim_time\">\u0433\u043e\u0442\u043e\u0432\u043e<\/span> [1] => \u0433\u043e\u0442\u043e\u0432\u043e ) Array ( )
Notice: Undefined offset: 1 in Y:\home\Sigiz.ru\www\Index.php on line 96
[Денвер: показать возможную причину ошибки]Array ( )
Notice: Undefined offset: 1 in Y:\home\Sigiz.ru\www\Index.php on line 96
Array ( )
Notice: Undefined offset: 1 in Y:\home\Sigiz.ru\www\Index.php on line 96
Array ( )
Notice: Undefined offset: 1 in Y:\home\Sigiz.ru\www\Index.php on line 96
Array ( )
Notice: Undefined offset: 1 in Y:\home\Sigiz.ru\www\Index.php on line 96
Array ( )
Notice: Undefined offset: 1 in Y:\home\Sigiz.ru\www\Index.php on line 96
Array ( )
Notice: Undefined offset: 1 in Y:\home\Sigiz.ru\www\Index.php on line 96

Вот что после второго:
Array ( [0] => farm_next_claim_time\">0:03:16<\/span> [1] => 0:03:16 ) Array ( [0] => farm_next_claim_time\">\u0433\u043e\u0442\u043e\u0432\u043e<\/span> [1] => \u0433\u043e\u0442\u043e\u0432\u043e ) Array ( )
Notice: Undefined offset: 1 in Y:\home\Sigiz.ru\www\Index.php on line 96
[Денвер: показать возможную причину ошибки]Array ( )
Notice: Undefined offset: 1 in Y:\home\Sigiz.ru\www\Index.php on line 96
Array ( )
Notice: Undefined offset: 1 in Y:\home\Sigiz.ru\www\Index.php on line 96
Array ( )
Notice: Undefined offset: 1 in Y:\home\Sigiz.ru\www\Index.php on line 96
Array ( )
Notice: Undefined offset: 1 in Y:\home\Sigiz.ru\www\Index.php on line 96
Array ( )
Notice: Undefined offset: 1 in Y:\home\Sigiz.ru\www\Index.php on line 96

Т.е. с каждым запуском скрипта, он на одну позицию продвигает цикл...



Спустя 13 минут, 21 секунда (25.07.2012 - 15:12) neadekvat написал(а):
Начнем с того, что твое регулярное выражение не работает..

Спустя 5 минут, 6 секунд (25.07.2012 - 15:17) ArtemKrass написал(а):
работает, я же его вывожу print_r
(Array ( [0] => farm_next_claim_time\">0:03:16<\/span> [1] => 0:03:16 ))

Походу цикл прерывается, когда условие выполняется... пробовал continue пихать не помогает, т.е. он не прерывается а перестает парсить страницу чтоли...?

Спустя 9 минут, 8 секунд (25.07.2012 - 15:26) neadekvat написал(а):
Тебя не смущает куча предупреждений, которые вызваны отсутствием второго элемента в каком-то из массивов (я уж не знаю, на какие строчки указывают предупреждения)?

Спустя 24 минуты, 5 секунд (25.07.2012 - 15:50) ArtemKrass написал(а):
ругается на эту строку

if ($ready[1] == "\u0433\u043e\u0442\u043e\u0432\u043e")

$ready[1] это именно то, что парсит регулярка... первый раз то он ее получает

Спустя 1 час, 19 минут, 9 секунд (25.07.2012 - 17:09) ArtemKrass написал(а):
Вся проблема видимо в $ready[1]

При первом проходе цикла нормально парсится, а далее возвращается пустой массив...

В чем может быть причина? Может есть какая то особенность отправки get и получения ответа через цикл?

Спустя 48 минут, 2 секунды (25.07.2012 - 17:57) ArtemKrass написал(а):
Проблема заключается в том, что на втором проходе цикла, скрипт вместо Get делает post запрос, при том, что в первый раз все отправляется правильно...

Проблема здесь:
$farminfo = 'http://ru1.grepolis.com/game/farm_town_info?action=claim_info&town_id='.$townid.'&h='.$token[1].'&json={"id":"'.$id.'","town_id":'.$townid.',"nlreq_id":'.$nlreq[1].'}&_='.$timef;
curl_setopt($curl, CURLOPT_URL, $farminfo);
curl_setopt($curl, CURLOPT_REFERER, 'http://ru1.grepolis.com/game/index?login=1');
curl_setopt($curl, CURLOPT_HTTPHEADER, array('X-REQUESTED-WITH: XMLHttpRequest'));
$html = curl_exec($curl);

Не могу понять как исправить...

Спустя 2 часа, 29 минут, 29 секунд (25.07.2012 - 20:27) ArtemKrass написал(а):
Разобрался!
Не хватало curl_setopt($curl, CURLOPT_POST, false);

Спустя 17 минут, 48 секунд (25.07.2012 - 20:44) neadekvat написал(а):
Нет ничего приятнее, чем разобраться самому, верно? smile.gif

Спустя 12 часов, 55 минут, 40 секунд (26.07.2012 - 09:40) ArtemKrass написал(а):
О ДА! Но меня все равно на мысль навели...
Быстрый ответ:

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