За последние 24 часа нас посетили 22918 программистов и 1263 робота. Сейчас ищут 747 программистов ...

Парсер погоды

Тема в разделе "Прочие вопросы по PHP", создана пользователем fergios, 27 янв 2012.

  1. fergios

    fergios Активный пользователь

    С нами с:
    27 янв 2012
    Сообщения:
    4
    Симпатии:
    0
    Здравствуйте, подскажите пожалуйста как мне выводить погоду не на 5 дней а на один и именно на данное время суток а не на 4-ре, я не совсем дружу с пхп, весь код перелазил, а толком ничего не сделал(
    Код (PHP):
    1. <?php
    2.     $file_content = file_get_contents('http://xml.weather.co.ua/1.2/forecast/1397?dayf=5');
    3.     $xml = simplexml_load_string($file_content);
    4.     foreach ($xml -> forecast -> day as $day) {
    5.         #определяем знак
    6.         if (strpos($day -> t -> min, '-') !== false) {
    7.             $sign_char_min = '';
    8.         }
    9.         else {$sign_char_min = '+';}
    10.         if (strpos($day -> t -> max, '-') !== false) {
    11.             $sign_char_max = '';
    12.         }
    13.         else {$sign_char_max = '+';}
    14.         switch ($day -> attributes() -> hour) {
    15.             case 3:
    16.                 $time_day = 'ночь';
    17.                 break;
    18.             case 9:
    19.                 $time_day = 'утро';
    20.                 break;
    21.             case 15:
    22.                 $time_day = 'день';
    23.                 break;
    24.             case 21:
    25.                 $time_day = 'вечер';
    26.                 break;
    27.             default:
    28.                 $time_day = 'none';
    29.                 break;
    30.         }
    31.         #определяем напраление ветра
    32.         if ($day -> wind -> rumb >= 0 && $day -> wind -> rumb < 20) {
    33.             $direct_wind = 'С';
    34.         }
    35.         else if ($day -> wind -> rumb >= 20 && $day -> wind -> rumb < 35) {
    36.             $direct_wind = 'С, С-В';
    37.         }
    38.         else if ($day -> wind -> rumb >= 35 && $day -> wind -> rumb < 55) {
    39.             $direct_wind = 'С-В';
    40.         }
    41.         else if ($day -> wind -> rumb >= 55 && $day -> wind -> rumb < 70) {
    42.             $direct_wind = 'В, С-В';
    43.         }
    44.         else if ($day -> wind -> rumb >= 70 && $day -> wind -> rumb < 110) {
    45.             $direct_wind = 'В';
    46.         }
    47.         else if ($day -> wind -> rumb >= 125 && $day -> wind -> rumb < 145) {
    48.             $direct_wind = 'Ю-В';
    49.         }
    50.         else if ($day -> wind -> rumb >= 145 && $day -> wind -> rumb < 160) {
    51.             $direct_wind = 'Ю, Ю-В';
    52.         }
    53.         else if ($day -> wind -> rumb >= 160 && $day -> wind -> rumb < 200) {
    54.             $direct_wind = 'Ю';
    55.         }
    56.         else if ($day -> wind -> rumb >= 200 && $day -> wind -> rumb < 215) {
    57.             $direct_wind = 'Ю, Ю-З';
    58.         }
    59.         else if ($day -> wind -> rumb >= 215 && $day -> wind -> rumb < 235) {
    60.             $direct_wind = 'Ю-З';
    61.         }
    62.         else if ($day -> wind -> rumb >= 235 && $day -> wind -> rumb < 250) {
    63.             $direct_wind = 'З, Ю-З';
    64.         }
    65.         else if ($day -> wind -> rumb >= 250 && $day -> wind -> rumb < 290) {
    66.             $direct_wind = 'З';
    67.         }
    68.         else if ($day -> wind -> rumb >= 290 && $day -> wind -> rumb < 305) {
    69.             $direct_wind = 'З, С-З';
    70.         }
    71.         else if ($day -> wind -> rumb >= 305 && $day -> wind -> rumb < 325) {
    72.             $direct_wind = 'С-З';
    73.         }
    74.         else if ($day -> wind -> rumb >= 325 && $day -> wind -> rumb < 340) {
    75.             $direct_wind = 'С, С-З';
    76.         }
    77.         else if ($day -> wind -> rumb >= 340 && $day -> wind -> rumb < 360) {
    78.             $direct_wind = 'С';
    79.         }
    80.         else {$direct_wind = 'Н';}
    81.         $l = false;
    82.         if(!isset($last_day)) {
    83.             $last_day = $day -> attributes() -> date;
    84.             $flag_print = true;
    85.         }
    86.         else if ((string) $last_day === (string) $day -> attributes() -> date) {
    87.             $flag_print = false;
    88.         }
    89.         else {$last_day = $day -> attributes() -> date;
    90.             $flag_print = true;
    91.             $l = true;
    92.             if ($time_day != 'none') {echo '</tr></table>';}
    93.         }
    94. ?>
    95. <?php if ($flag_print and $time_day != 'none') { ?>
    96.     <table style="float: left; margin: 0 2px 20px 0; border: 1px solid #444;">
    97.         <tr>
    98.             <td colspan="4" style="border-top: 1px solid #444; text-align: center;" title="Погода на дату">
    99.                 <?php if ($flag_print) { echo date('d.m.Y', strtotime($day -> attributes() -> date)); } ?>
    100.             </td>
    101.         </tr>
    102.         <tr>
    103.             <?php } ?>
    104.                 <?php if ($time_day != 'none') { ?>
    105.                     <td style="border: 1px solid #444;">
    106.                         <div style="text-align: center;">
    107.                             <p style="margin: 0px; padding: 2px; border-bottom: 1px solid #444; background-color: #eaeaea;" title="Время суток"><?php echo $time_day; ?></p>
    108.                             <p style="margin: 0px; padding: 2px; border-bottom: 1px solid #444; background-color: #aaaaff; color: white; font-weight: bold;" title="Температура"><?php echo $sign_char_min . $day -> t -> min ?> ... <?php echo $sign_char_max . $day -> t -> max ?></p>
    109.                             <p style="margin: 0px; padding: 2px; border-bottom: 1px solid #444;"><img src="/sites/all/themes/ogaboga/clipart/<?php echo $day -> pict ?>" alt="<?php echo $day -> pict ?>" /></p>
    110.                             <p style="margin: 0px; padding: 2px; border-bottom: 1px solid #444;" title="Вероятность осадков"><?php echo $day -> ppcp ?>%</p>
    111.                             <p style="margin: 0px; padding: 2px; border-bottom: 1px solid #444;" title="Давление"><?php echo $day -> p -> min . '-' . $day -> p -> max ?></p>
    112.                             <p style="margin: 0px; padding: 2px; border-bottom: 1px solid #444; background-color: #ffa500; color: white; font-weight: bold;" title="Направление ветра"><?php echo $direct_wind ?><br /><?php echo $day -> wind -> min . '-' . $day -> wind -> max ?> м/с</p>
    113.                             <p style="margin: 0px; padding: 2px; border-bottom: 0px solid #444;" title="Влажность"><?php echo $day -> hmid -> min . '%-' . $day -> hmid -> max ?>%</p>
    114.                         </div>
    115.                     </td>
    116.                 <?php } ?>
    117. <?php } ?>
    118. </tr></table>
     
  2. Denis.Y

    Denis.Y Активный пользователь

    С нами с:
    8 авг 2011
    Сообщения:
    145
    Симпатии:
    0
    Адрес:
    Россия, Самарская область
    вместо foreach конструкции, просто разбить первый элемент в $xml, это и будет текущий день.
     
  3. Dmitriy A. Arteshuk

    Dmitriy A. Arteshuk Активный пользователь

    С нами с:
    19 янв 2012
    Сообщения:
    2.445
    Симпатии:
    66
    Адрес:
    Зеленоград
  4. Mr. T

    Mr. T Активный пользователь

    С нами с:
    10 ноя 2010
    Сообщения:
    733
    Симпатии:
    0
    Адрес:
    Украина, г. Киев
    На прямую через file_get_contents грабите? Забанят...