fork download
  1. <?
  2. // Массив с трек-номерами посылок
  3. // заполняйте его по аналогии трек-номерами своих посылок
  4. $codes=array('RA111111111CN', 'RA222222222CN', 'RA33333333CN');
  5.  
  6. // Массив с результатами отслеживания
  7. $status=array();
  8.  
  9. $link='http://w...content-available-to-author-only...t.ru/resp_engine.aspx?Path='.
  10. 'rp/servise/ru/home/postuslug/trackingpo';
  11.  
  12. foreach ($codes as $code) {
  13. // Подготовка запроса cURL
  14. $ch = curl_init();
  15. curl_setopt($ch, CURLOPT_URL, $link);
  16. curl_setopt($ch, CURLOPT_HEADER, 0);
  17. curl_setopt($ch, CURLOPT_POST, 1);
  18. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  19. curl_setopt($ch, CURLOPT_POSTFIELDS, 'entryBarCode='.$code.
  20. '&BarCode='.$code.'&searchsign=1');
  21.  
  22. // Отправка POST-запроса на сервер и получение страницы результата
  23. $grab=curl_exec($ch);
  24.  
  25. if (eregi('value="([0-9]+)"',$grab,$pocket)) {
  26. // установка URL и других необходимых параметров
  27. curl_setopt($ch, CURLOPT_URL, $link);
  28. curl_setopt($ch, CURLOPT_HEADER, 1);
  29. curl_setopt($ch, CURLOPT_POST, 1);
  30. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  31. curl_setopt($ch, CURLOPT_POSTFIELDS, 'key='.$pocket[1]);
  32.  
  33. // загрузка страницы
  34. $grab=curl_exec($ch);
  35.  
  36. // установка URL и других необходимых параметров
  37. curl_setopt($ch, CURLOPT_URL, $link);
  38. curl_setopt($ch, CURLOPT_HEADER, 1);
  39. curl_setopt($ch, CURLOPT_POST, 1);
  40. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  41. curl_setopt($ch, CURLOPT_POSTFIELDS, 'entryBarCode='.$code.
  42. '&BarCode='.$code.'&searchsign=1');
  43.  
  44. // загрузка страницы
  45. $grab=curl_exec($ch);
  46. }
  47.  
  48. // Фикс кодировки полученной страницы
  49. $grab=mb_convert_encoding($grab, 'Windows-1251', 'UTF-8');
  50.  
  51. // Небольшой фикс для упрощения парсинга страницы
  52. $grab=eregi_replace('<a href=javascript\:Wind\([^\(]*\)>','',$grab);
  53.  
  54. preg_match_all('/<tr align="center"><td>([^<]+)<\/td><td>([^<]+)'.
  55. '<\/td><td>[^<]*<\/td><td>([^<]+)<\/td><td>([^<]*)<\/td>/',$grab,$matches);
  56.  
  57. $st=array();
  58. $st['code']=$code;
  59. // Если получен какой-то результат
  60. if (count($matches[1])) {
  61. // Последнее действие
  62. if ($matches[4][count($matches[1])-1]) {
  63. $st['action']=$matches[4][count($matches[1])-1];
  64. }
  65. else {
  66. $st['action']=$matches[1][count($matches[1])-1];
  67. }
  68. // Дата последнего действия
  69. $st['date']=$matches[2][count($matches[1])-1];
  70. // Местонахождение посылки
  71. $st['where']=$matches[3][count($matches[1])-1];
  72. }
  73. // Ошибка на сервере или статус посылки еще не определен
  74. else {
  75. $st['action']='Неизвестно';
  76. $st['date']='--';
  77. $st['where']='--';
  78. }
  79.  
  80. // Записать результат в массив
  81. $status[]=$st;
  82.  
  83. curl_close($ch);
  84. }
  85. // Теперь в массиве $status содержится информация по всем посылкам
  86. var_dump($status);
  87. ?>
Success #stdin #stdout 0.01s 82880KB
stdin
Standard input is empty
stdout
<?
// Массив с трек-номерами посылок
// заполняйте его по аналогии трек-номерами своих посылок
$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);
?>