Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- //Реализация примитивного алгоритма табло
- const CACHED_WHAZZUP_FILENANE = 'cached_whazzup';
- const WHAZZUP_URL = 'https://api.ivao.aero/getdata/whazzup';
- //Функция получения файла whazzup из кеша. Задумка такая, что будет возвращаться локальный файл, если он обновлен менее минуты назад
- function getWhazzup()
- {
- //Проверим наличие самого файла:
- if(!file_exists(CACHED_WHAZZUP_FILENANE) ||
- //Проверим дату его модификации (должна быть меньше трех минут от текущего времени)
- time() - filemtime(CACHED_WHAZZUP_FILENANE) > 180){
- //Если файла нет, или время протухло - забираем актуальный файл из сети и записываем в этот файл
- file_put_contents(CACHED_WHAZZUP_FILENANE, file_get_contents(WHAZZUP_URL));
- }
- //возвращаем содержимое файла кеша
- return file_get_contents(CACHED_WHAZZUP_FILENANE);
- }
- //1. Получим файл с текущими актуальными данными из сети IVAO
- $whazzup = getWhazzup();
- //2. Преобразуем файл в массив, разбив по разделителям конца строки
- $rawdata = explode("\n", $whazzup);
- //3. Подготовим пустой массив, в котором будут только нужные нам строки
- $tablodata = [];
- //4. Пройдем по массиву данных из сети построчно
- foreach($rawdata as $line){
- //5. Разобъем каждую строку по символу ":" как указанно в whazzup в массив $data
- $data = explode(":", $line);
- //6. Проверим, что массив содержит больше 40 элементов (PILOT)
- if(sizeof($data) < 40) continue; //continue прерывает итерацию и переходит к следующей
- //7. В это место мы попадаем только, если массив содержит минимум 40 элементов. Проверим нулевой элемент (callsign) на соответствие паттерну TYE
- if(preg_match('/^AFL/',$data[0])){ //Здесь можно поменять паттерн на любой другой (TYA в момент проверки в сети не было)
- //8. Запишем в массив строк табло эту строку в нужном виде (ряд таблицы с тремя колонками)
- $tablodata[] = "<tr><td>".$data[0]."</td><td>".$data[11]."</td><td>".$data[13]."</td></tr>";
- }
- }
- ?>
- <!-- немного стилей -->
- <style>
- table.tablo{
- width: 100%;
- padding: 20px;
- border: 1px solid gray;
- border-collapse: collapse;
- }
- table.tablo th{
- background-color: #a8a8a8;
- border: 1px solid gray;
- padding: 5px;
- }
- table.tablo tr:nth-child(even) {background: #efefef}
- table.tablo tr:nth-child(odd) {background: #FFF}
- table.tablo td{
- border: 1px dotted gray;
- text-align: center;
- }
- </style>
- <!-- Тут уже сама таблица HTML -->
- <table class="tablo">
- <thead>
- <tr>
- <th>CALLSIGN</th>
- <th>FROM</th>
- <th>TO</th>
- </tr>
- </thead>
- <tbody>
- <?php
- //Проходим по массиву $tablodata и выдаем наружу все, что в нем есть
- foreach($tablodata as $row){
- echo $row;
- }
- ?>
- </tbody>
- </table>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement