<?
// Массив с трек-номерами посылок
// заполняйте его по аналогии трек-номерами своих посылок
$codes=array('RA111111111CN', 'RA222222222CN', 'RA33333333CN');
// Массив с результатами отслеживания
$status=array();
$link='http://w...content-available-to-author-only...t.ru/resp_engine.aspx?Path='.
'rp/servise/ru/home/postuslug/trackingpo';
foreach ($codes as $code) {
// Подготовка запроса cURL
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $link);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'entryBarCode='.$code.
'&BarCode='.$code.'&searchsign=1');
// Отправка POST-запроса на сервер и получение страницы результата
$grab=curl_exec($ch);
if (eregi('value="([0-9]+)"',$grab,$pocket)) {
// установка URL и других необходимых параметров
curl_setopt($ch, CURLOPT_URL, $link);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'key='.$pocket[1]);
// загрузка страницы
$grab=curl_exec($ch);
// установка URL и других необходимых параметров
curl_setopt($ch, CURLOPT_URL, $link);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'entryBarCode='.$code.
'&BarCode='.$code.'&searchsign=1');
// загрузка страницы
$grab=curl_exec($ch);
}
// Фикс кодировки полученной страницы
$grab=mb_convert_encoding($grab, 'Windows-1251', 'UTF-8');
// Небольшой фикс для упрощения парсинга страницы
$grab=eregi_replace('<a href=javascript\:Wind\([^\(]*\)>','',$grab);
preg_match_all('/<tr align="center"><td>([^<]+)<\/td><td>([^<]+)'.
'<\/td><td>[^<]*<\/td><td>([^<]+)<\/td><td>([^<]*)<\/td>/',$grab,$matches);
$st=array();
$st['code']=$code;
// Если получен какой-то результат
if (count($matches[1])) {
// Последнее действие
if ($matches[4][count($matches[1])-1]) {
$st['action']=$matches[4][count($matches[1])-1];
}
else {
$st['action']=$matches[1][count($matches[1])-1];
}
// Дата последнего действия
$st['date']=$matches[2][count($matches[1])-1];
// Местонахождение посылки
$st['where']=$matches[3][count($matches[1])-1];
}
// Ошибка на сервере или статус посылки еще не определен
else {
$st['action']='Неизвестно';
$st['date']='--';
$st['where']='--';
}
// Записать результат в массив
$status[]=$st;
curl_close($ch);
}
// Теперь в массиве $status содержится информация по всем посылкам
var_dump($status);
?>