AAA Главная
Примеры PHP Примеры JavaScript Примеры Ajax Примеры CSS,HTML

Пример запроса и отображения информации о погоде в любом городе

Информация о погоде берется с сервера http://meteo.infospace.ru.

Выберите город:

Погода в г.Москва

Прогноз составлен:
26.04.2017 - 0:00 MSK
Ср, 26.04 Чт, 27.04 Пт, 28.04 Сб, 29.04 Вс, 30.04 Пн, 1.05 Вт, 2.05
 Днем    +14 °C     +13 °C     +8 °C     +19 °C     +20 °C     +16 °C     +21 °C  
 Ночью    +3 °C     +5 °C     +4 °C     +6 °C     +8 °C     +9 °C     +9 °C  
 Давление (при H = 150 м)    745 мм     747 мм     750 мм     751 мм     753 мм     755 мм     754 мм  
 Ветер    8 м/с  (Ю)     1 м/с  (ЮЗ)     4 м/с  (СЗ)     5 м/с  (ЮВ)     5 м/с  (ЮВ)     2 м/с  (Ю)     3 м/с  (B)  
 Облачность    Пасмурно     Пасмурно     Пасмурно     Переменная  облачность     Малооблачно     Облачно     Малооблачно  
 Осадки    Дождь     Небольшой дождь     Небольшой дождь     Возможен  небольшой дождь     Без осадков     Небольшой дождь     Небольшой дождь  

Исходный код примера:

$city=1264; // Москва
// Если существует сегодняшняя кэшированная версия, отдаю её:
$cache_file=$_SERVER['DOCUMENT_ROOT']."/tmp/pogoda".$city.".cch";
if (file_exists( $cache_file ) && 
	date('Y-m-d',filemtime($cache_file))==
	date("Y-m-d", mktime(0, 0, 0, date("m") , date("d"), date("Y")))){
   readfile($cache_file);
}else{

$content=file_get_contents("http://meteo.infospace.ru/win/wcond/html/");
$start = strpos( $content, "r_form.ssi?id=" ) + 11;
$end   = strpos( $content, '"', $start );

$id = substr( $content, $start, $end - $start );
if ( substr( $id, strlen( $id ) - 1, 1 ) == '"' )
{
	$id = substr( $id, 0, strlen( $id ) - 1 );
}

$content=file_get_contents("http://meteo.infospace.ru/win/cities/html/city_r.sht?num=$city&$id");

// название населенного пункта
if (preg_match('|<font color=#800000>(.*?)</font>|sei', $content, $arr)) $title = trim($arr[1]);
   else $title='';

$tstart = strpos( $content, "<table BORDER=0 CELLPADDING=0 CELLSPACING=0 width=100%>" ) + 55;
$tend   = strpos( $content, "</TABLE>", $tstart ) + 8;
$tbl    = substr( $content, $tstart, $tend - $tstart );

$search_patterns  = array(
	"../../images/",
	"<font size=-1",
	"Дневная температура",
	"Ночная температура",
	"(при H =\x0a   \t\t\t\t90\x0a   \t\t\t\tм)",
	"BGCOLOR=#B4DCFF",
	"BGCOLOR=#A0C8FF",
	"BGCOLOR=#8CB4FA",
	"BGCOLOR=#78A0F0",
	"BGCOLOR=#648CE6",
	"BGCOLOR=5078DC",
	"BGCOLOR=#5078DC",
	"BGCOLOR=#3C64D2",
	"BGCOLOR=#3C64D2",
	"<font size=-2",
	"<FONT SIZE=-1",
	"<B>", "</B>", "<I>", "</I>"
);

$replace_patterns = array(
	"pogoda/",
	"<font size=1 face=\"Areal\"",
	"Днем",
	"Ночью",
	"",
	"bgcolor=#ffffff",
	"bgcolor=#ffffff",
	"bgcolor=#ffffff",
	"bgcolor=#ffffff",
	"bgcolor=#ffffff",
	"bgcolor=#ffffff",
	"bgcolor=#ffffff",
	"bgcolor=#ffffff",
	"bgcolor=#ffffff",
	"<font size=-2 face=\"Areal\"",
	"<font size=-2 face=\"Areal\""
);

$tbl =  "<h2>Погода в г.".$title."</h2>\n".
	"<table border=0 cellpadding=0 cellspacing=0 width=500 height=190>\n".
	str_replace( $search_patterns, $replace_patterns, $tbl );
@file_put_contents($cache_file,$tbl);
echo $tbl;
}

Чтобы узнать код вашего города($city), найдите погоду в вашем городе на сервере и посмотрите параметр num в адресной строке браузера.

Картинки из папки pogoda можно скачать здесь.


.

© Copyright 2008-2017 by KDG