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