Отображение погоды на Вашем сайте

в 17:10, , рубрики: php, Веб-разработка, погода, яндекс

Думаю очень многие знают о информерах для сайта от Яндекс.Погоды. Но не всегда нам нужно такое отображение данных, которое даёт нам сам Яндекс. В этом посте я расскажу, как сделать отображение погоды без официальных информеров. Кроме этого, погода будет показываться посетителю Вашего сайта в зависимости от его региона.

Итак, приступим. Первое, что нам нужно — это ссылка экспорта погоды Яндекса
http://export.yandex.ru/weather/

Она отдаёт нам всю нужную информацию в XML-виде:

<weather>
  <date>
      <day>10</day>
      <month>7</month>
      <year>2014</year>
  </date>
  <city>Москва</city>
  <country>Россия</country>
  <weather_type>облачно с прояснениями</weather_type>
  <image>http://weather.yandex.ru/i/df102.gif</image>
  <image2>http://weather.yandex.ru/i/6.png</image2>
  <temperature>+16</temperature>
  <pressure>751</pressure>
  <dampness>62</dampness>
</weather>

Теперь осталось обработать эту информацию — достать нужные нам данные в переменные

$pogoda = file_get_contents('http://export.yandex.ru/weather/');
    preg_match('/<weather_type>(.*?)</weather_type>/i',$pogoda,$type);
    preg_match('/<dampness>(.*?)</dampness>/i',$pogoda,$vlaga);
    preg_match('/<temperature>(.*?)</temperature>/i',$pogoda,$temp);
    preg_match('/<image2>(.*?)</image2>/i',$pogoda,$img2);
    preg_match('/<pressure>(.*?)</pressure>/i',$pogoda,$press);
    $imgp = substr($img2[1], 24);

И вывести всё это на экран в любом удобном для нас виде:

$vivod = "<img align="top" src="//img.yandex.net$imgp" alt="$type[1]" />$temp[1] °C
    $type[1]<br />
    Влажность: $vlaga[1] %<br />
    Давление: $press[1] мм рт.ст.";
    echo $vivod;

В результате у нас получается нечто подобное:
Отображение погоды на Вашем сайте

Можно поиграть с css, выводить в добавок дату, время, город и размещать данные в нужном Вам порядке.

Цельный код

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>Погода</title>
</head>
<body>
<?php
    $pogoda = file_get_contents('http://export.yandex.ru/weather/');
    preg_match('/<weather_type>(.*?)</weather_type>/i',$pogoda,$type);
    preg_match('/<dampness>(.*?)</dampness>/i',$pogoda,$vlaga);
    preg_match('/<temperature>(.*?)</temperature>/i',$pogoda,$temp);
    preg_match('/<image2>(.*?)</image2>/i',$pogoda,$img2);
    preg_match('/<pressure>(.*?)</pressure>/i',$pogoda,$press);
    $imgp = substr($img2[1], 24);
    $vivod = "<img align="top" src="//img.yandex.net$imgp" alt="$type[1]" />$temp[1] °C
    $type[1]<br />
    Влажность: $vlaga[1] %<br />
    Давление: $press[1] мм рт.ст.";
    echo $vivod;
?>
</body>
</html>

Автор: pingvi69

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js