Получение метеоданных

Тема в разделе ".:: Готовые решения", создана пользователем akhkharu, 28 май 2008.

Статус темы:
Закрыта.
  1. akhkharu

    akhkharu Постоялец

    Регистр.:
    26 июн 2007
    Сообщения:
    111
    Симпатии:
    12
    Есть сервис (Перейти по ссылке), который бесплатно предоставляет погодные данные в формате XML.

    PHP:
    <?php

        define
    ('USE_PROXY'false);


        class 
    CWeather {
            private 
    $casts;
            private 
    $xml;
            private 
    $count;

            public function 
    GetWeatherCast($url$context) {
                
    $this->count count ($url);
                for (
    $i=0$i $this->count$i++) {
                    if (
    USE_PROXY)
                          
    $this->casts[$i] = file_get_contents($url[$i], false$context);
                      else
                          
    $this->casts[$i] = file_get_contents($url[$i]);
                }
            }

            public function 
    ProccessWeatherCast() {
                if (
    version_compare("5.0.0"phpversion()) <= 0    && class_exists("SimpleXMLElement")) {
                    for (
    $i=0$i $this->count$i++) {
                        
    $this->xml[$i] = new SimpleXMLElement($this->casts[$i]);
                    }
                  } else die(
    "Ошибка: для работы функции получения погоды должна быть установлена версия PHP не ниже 5 и должно быть установлено расширение SimpleXML.");
            }

            public function 
    SaveWeatherCast() {
                
    $out = array();
                
    $cache fopen("../../../system/application/cached/weather.cache""w");
                for (
    $j 0$j $this->count$j++) {
                    for (
    $i 0$i count($this->xml[$j]->point[0]->timestep); $i++) {
                        if (
    $this->xml[$j]->point[0]->timestep[$i]->time_step == 12)
                            
    $out[] = (string) $this->xml[$j]->point[0]->timestep[$i]->temperature;
                    }
                }
                
    fwrite ($cachejoin(";"$out));
                
    fclose($cache);
            }
        }
        
        
    $cities = array ( 
                          
    "http://rp5.ru/xml.php?id=3646"
                          
    "http://rp5.ru/xml.php?id=5599"
                          
    "http://rp5.ru/xml.php?id=9065"
                          
    "http://rp5.ru/xml.php?id=1866"
                          
    "http://rp5.ru/xml.php?id=1045"
                          
    "http://rp5.ru/xml.php?id=5190"
                        
    );

        
    $weather = new CWeather();
        
    $weather->GetWeatherCast($cities$proxy);
        
    $weather->ProccessWeatherCast();
        
    $weather->SaveWeatherCast();

    ?>
     
    yuri25 нравится это.
Статус темы:
Закрыта.