...

четверг, 10 июля 2014 г.

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

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



Итак, приступим. Первое, что нам нужно — это ссылка экспорта погоды Яндекса

http://ift.tt/1qohdil

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



<weather>
<date>
<day>10</day>
<month>7</month>
<year>2014</year>
</date>
<city>Москва</city>
<country>Россия</country>
<weather_type>облачно с прояснениями</weather_type>
<image>http://ift.tt/1mOqbr8;
<image2>http://ift.tt/1mOq8eU;
<temperature>+16</temperature>
<pressure>751</pressure>
<dampness>62</dampness>
</weather>


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



$pogoda = file_get_contents('http://ift.tt/1qohdil');
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://ift.tt/1qohdil');
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>





This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.


Комментариев нет:

Отправить комментарий