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

Статус
В этой теме нельзя размещать новые ответы.

akhkharu

Постоялец
Регистрация
26 Июн 2007
Сообщения
110
Реакции
19
Есть сервис (Для просмотра ссылки Войди или Зарегистрируйся), который бесплатно предоставляет погодные данные в формате 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 ($cache, join(";", $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();

?>
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху