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

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

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

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

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

Прогноз составлен:
5.07.2019 - 18:00 MSK
Пт, 5.07 Сб, 6.07 Вс, 7.07 Пн, 8.07 Вт, 9.07 Ср, 10.07 Чт, 11.07
 Днем    +19 °C     +19 °C     +21 °C     +21 °C     +20 °C     +20 °C     +16 °C  
 Ночью    +8 °C     +9 °C     +9 °C     +10 °C     +9 °C     +9 °C     +7 °C  
 Давление (при H = 150 м)    740 мм     736 мм     736 мм     736 мм     737 мм     735 мм     734 мм  
 Ветер    4 м/с  (З)     5 м/с  (Ю)     5 м/с  (З)     4 м/с  (ЮЗ)     4 м/с  (З)     4 м/с  (ЮЗ)     4 м/с  (СЗ)  
 Облачность    Облачно     Облачно     Переменная  облачность     Переменная  облачность     Малооблачно     Переменная  облачность     Облачно  
 Осадки    Без осадков     Без осадков     Небольшой дождь     Преимущественно без осадков     Без осадков     Возможен дождь     Преимущественно без осадков  

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

$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-2019 by KDG



Rambler's Top100