function GetBoardFromSite($queryParameters) { $result = array(); $result = CAirportBoard::GetOneBoardFromSite($queryParameters, ""); $res = $result["HTML"]; unset($result["HTML"]); /*// Ниже код для загрузки табло за сутки (используется три запроса с последующей склейкой) $result = CAirportBoard::GetOneBoardFromSite( $queryParameters, "v=3" ); $res = $result["HTML"]; unset($result["HTML"]); $result2 = CAirportBoard::GetOneBoardFromSite( $queryParameters, "v=11" ); $res .= $result2["HTML"]; unset($result2["HTML"]); $result3 = CAirportBoard::GetOneBoardFromSite( $queryParameters, "v=19" ); $res .= $result3["HTML"]; unset($result3["HTML"]); if ( intval($result2["ERROR"]["CODE"]) ) { $result["ERROR"] = $result2["ERROR"]; } elseif ( intval($result3["ERROR"]["CODE"]) ) { $result["ERROR"] = $result3["ERROR"]; } */ if (!intval($result["ERROR"]["CODE"])) { $res = '<table>' . $res . '</table>'; $res = str_replace("<br>", " ", $res); $res = str_replace("<nobr>", "", $res); $res = str_replace("</nobr>", "", $res); //trace($res); $xml = new CDataXML(); if ($xml->LoadString($res)) { $node = $xml->SelectNodes("/table"); $rows = $node->elementsByName("tr"); $akNames = array(); $akCodes = array(); $departures = array(); $arrivals = array(); $terminals = array(); $i = 0; foreach ($rows as $row) { if (strstr($row->getAttribute("class"), "tr0")) { $cells = $row->elementsByName("td"); // Определяем код авиакомпании и номер рейса preg_match_all("/([A-Za-zА-Яа-я0-9]{2})\\s*([0-9]+)\\s*/", $cells[0]->content, $flightNumber, PREG_PATTERN_ORDER); $cityPatterns = array("/([\\W\\d]+)\\(/", "/\\s+\\)\\s*/"); $cityReplace = array("\$1 (", ")"); $result["FLIGHTS"][$i] = array("FLIGHT" => array("AK_CODE" => $flightNumber[1][0], "NUMBER" => $flightNumber[2][0]), "AK_NAME" => "", "DEPARTURE" => htmlspecialcharsEx(preg_replace($cityPatterns, $cityReplace, $cells[1]->content)), "ARRIVAL" => htmlspecialcharsEx(preg_replace($cityPatterns, $cityReplace, $cells[1]->content)), "STATUS" => CAirportBoard::GetStatusInfo($cells[5]->content), "TIME" => array("PLANNED" => CAirportBoard::GetDateTimeArray($cells[2]->content), "ESTIMATED" => "", "ACTUAL" => CAirportBoard::GetDateTimeArray($cells[3]->content)), "TERMINAL" => ""); // Формируем список уникальных терминалов и пунктов вылета и прилета для фильтра if (!in_array($flightNumber[1][0], $akCodes)) { $akCodes[] = $flightNumber[1][0]; } if (!in_array($result["FLIGHTS"][$i]["DEPARTURE"], $departures)) { $departures[] = $result["FLIGHTS"][$i]["DEPARTURE"]; } if (!in_array($result["FLIGHTS"][$i]["ARRIVAL"], $arrivals)) { $arrivals[] = $result["FLIGHTS"][$i]["ARRIVAL"]; } $i++; } } sort($akNames); sort($akCodes); sort($departures); sort($arrivals); sort($terminals); $result["AK_NAMES"] = $akNames; $result["AK_CODES"] = $akCodes; $result["DEPARTURES"] = $departures; $result["ARRIVALS"] = $arrivals; $result["TERMINALS"] = $terminals; } } return $result; }
function GetBoardFromSite($queryParameters) { $result = array(); $result = CAirportBoard::GetOneBoardFromSite($queryParameters, "p=1&time2=24"); $result2 = CAirportBoard::GetOneBoardFromSite($queryParameters, "p=2&time2=24"); if (intval($result2["ERROR"]["CODE"])) { $result["ERROR"] = $result2["ERROR"]; } if (!intval($result["ERROR"]["CODE"])) { $result["AK_NAMES"] = array(); $result["AK_CODES"] = array(); $result["DEPARTURES"] = array(); $result["ARRIVALS"] = array(); $result["TERMINALS"] = array(); $result = CAirportBoard::AddFlightsToResult($result["HTML"], $result, "Пулково-1"); unset($result["HTML"]); $result = CAirportBoard::AddFlightsToResult($result2["HTML"], $result, "Пулково-2"); unset($result2); sort($result["AK_NAMES"]); sort($result["AK_CODES"]); sort($result["DEPARTURES"]); sort($result["ARRIVALS"]); sort($result["TERMINALS"]); // Сортируем рейсы по абсолютному времени вылета SortFreeStyleArray($result["FLIGHTS"], array('["TIME"]["PLANNED"]["DATETIME"]' => 'ASC', '["FLIGHT"]' => 'ASC')); //trace($result); } return $result; }