Мне понадобилось вывести на странице погоду от яндекса для своего города. Я знаю несколько сервисов, которые могу показать погоду, но мне хотелось использовать сервис от Яндекса (Яндекс.Погода). Нашел интересную статью на хабре Яндекс.ТвояПогода и решил немного переделать скрипт. Посмотрите эту статью. Мне не нужно выводить информер на странице, а нужно получить данные о погоде в JSON-формате. Подробно о технологии AJAX читайте на странице технология ajax jquery. Я немного переделал скрипт. Создал массив $weatherArr. Он содержит в себе данные о погоде для определённого города. Я присвоил переменной id-города Краснодара.
// список городов https://pogoda.yandex.ru/static/cities.xml
$city_id=34929; // id города
$data_file="http://export.yandex.ru/weather-ng/forecasts/$city_id.xml";
// раскладываем xml на массив
$xml = simplexml_load_file($data_file);
//var_dump($xml) посмотрите на свойства объекта
/* выбираем требуемые параметры (город, температура, пиктограмма
и тип погоды текстом (облачно, ясно)*/
$city=$xml->fact->station;
$temp=$xml->fact->temperature;
$pic=$xml->fact->image;
$type=$xml->fact->weather_type;
// Если значение температуры положительно, для наглядности добавляем "+"
if ($temp>0) {$temp='+'.$temp;}
$weatherArr = Array(
'city_id' => $city_id,
'city' => (string)$city[0],
'img' => 'http://img.yandex.net/i/wiz'.$pic.'.png',
'type' => (string)$type,
'temperature' => $temp."oC"
);
echo json_encode($weatherArr);
Скрипт грабит xml-документ и эти значения нужно как-то передать. У скрипта есть один недостаток. Он медленно работает. Функция simplexml_load_file() возвращает объект с довольно большим количеством свойств. Мне нужны строго определённые значения: ID-города, название города, картинка состояния погоды, тип, значение температуры в градусах. Я собираю все значения в один массив, а потом вывожу его в JSON-формате с помощью функции json_encode().
Для ускорения работы этого скрипта вы можете использовать cron планировщик. У вас информация может записываться в базу и вы можете обновлять её через несколько минут.
Значение переменной $xml - это объект. В нем много интересных свойств. Вы можете копаться в них. Меня интересует только несколько параметров и только за сегодняшний день. Думаю там есть прогноз на текущую неделю. Поэкспериментируйте с объектом $xml.