Advertisement
Guest User

Untitled

a guest
Sep 20th, 2019
162
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 3.78 KB | None | 0 0
  1. <?php
  2. //Реализация примитивного алгоритма табло
  3. const CACHED_WHAZZUP_FILENANE = 'cached_whazzup';
  4. const WHAZZUP_URL = 'https://api.ivao.aero/getdata/whazzup';
  5.  
  6. //Функция получения файла whazzup из кеша. Задумка такая, что будет возвращаться локальный файл, если он обновлен менее минуты назад
  7. function getWhazzup()
  8. {
  9.     //Проверим наличие самого файла:
  10.     if(!file_exists(CACHED_WHAZZUP_FILENANE) ||
  11.         //Проверим дату его модификации (должна быть меньше трех минут от текущего времени)
  12.         time() - filemtime(CACHED_WHAZZUP_FILENANE) > 180){
  13.             //Если файла нет, или время протухло - забираем актуальный файл из сети и записываем в этот файл
  14.             file_put_contents(CACHED_WHAZZUP_FILENANE, file_get_contents(WHAZZUP_URL));
  15.     }
  16.     //возвращаем содержимое файла кеша
  17.     return file_get_contents(CACHED_WHAZZUP_FILENANE);
  18. }
  19.  
  20.  
  21. //1. Получим файл с текущими актуальными данными из сети IVAO
  22. $whazzup = getWhazzup();
  23. //2. Преобразуем файл в массив, разбив по разделителям конца строки
  24. $rawdata = explode("\n", $whazzup);
  25. //3. Подготовим пустой массив, в котором будут только нужные нам строки
  26. $tablodata = [];
  27. //4. Пройдем по массиву данных из сети построчно
  28. foreach($rawdata as $line){
  29.     //5. Разобъем каждую строку по символу ":" как указанно в whazzup в массив $data
  30.     $data = explode(":", $line);
  31.     //6. Проверим, что массив содержит больше 40 элементов (PILOT)
  32.     if(sizeof($data) < 40) continue; //continue прерывает итерацию и переходит к следующей
  33.     //7. В это место мы попадаем только, если массив содержит минимум 40 элементов. Проверим нулевой элемент (callsign) на соответствие паттерну TYE
  34.     if(preg_match('/^AFL/',$data[0])){ //Здесь можно поменять паттерн на любой другой (TYA в момент проверки в сети не было)
  35.         //8. Запишем в массив строк табло эту строку в нужном виде (ряд таблицы с тремя колонками)
  36.         $tablodata[] = "<tr><td>".$data[0]."</td><td>".$data[11]."</td><td>".$data[13]."</td></tr>";
  37.     }
  38. }
  39. ?>
  40. <!-- немного стилей -->
  41. <style>
  42.     table.tablo{
  43.         width: 100%;
  44.         padding: 20px;
  45.         border: 1px solid gray;
  46.         border-collapse: collapse;
  47.     }
  48.     table.tablo th{
  49.         background-color: #a8a8a8;
  50.         border: 1px solid gray;
  51.         padding: 5px;
  52.     }
  53.     table.tablo tr:nth-child(even) {background: #efefef}
  54.     table.tablo tr:nth-child(odd) {background: #FFF}
  55.     table.tablo td{
  56.         border: 1px dotted gray;
  57.         text-align: center;
  58.     }
  59. </style>
  60. <!-- Тут уже сама таблица HTML -->
  61. <table class="tablo">
  62.     <thead>
  63.         <tr>
  64.             <th>CALLSIGN</th>
  65.             <th>FROM</th>
  66.             <th>TO</th>
  67.         </tr>
  68.     </thead>
  69.     <tbody>
  70.     <?php
  71.     //Проходим по массиву $tablodata и выдаем наружу все, что в нем есть
  72.     foreach($tablodata as $row){
  73.         echo $row;
  74.     }
  75.     ?>
  76.     </tbody>
  77. </table>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement