через сервер синхронизации времени от Яндекс
Сохраню полезную ссылку сдесь:
https://yandex.ru/time/sync.json?geo=54
где geo код своего города можно узнать в модуле яндекс погоды.
В ответ прилетает json с закатом и рассветом
{"time":1565684192887,"clocks":{"54":{"id":54,"name":"Екатеринбург","offset":18000000,"offsetString":"UTC+5:00","showSunriseSunset":true,"sunrise":"05:20","sunset":"20:43","isNight":false,"skyColor":"#57bbfe","weather":{"temp":19,"icon":"bkn-d","link":"https://yandex.ru/pogoda/yekaterinburg"},"parents":[{"id":11162,"name":"Свердловская область"},{"id":225,"name":"Россия"}]}}}
который легко распарсить с помощью php
$url= 'https://yandex.ru/time/sync.json?geo=54';
$content=getURL($url, 0);
$data=json_decode($content,true);
//$objn=$data[0]['id'];
foreach ($data as $key=> $value)
{
if (is_array($value))
{
foreach ($value as $key1=> $value1)
{
if (is_array($value1))
foreach ($value1 as $key2=> $value2) {
if (is_array($value2))
foreach ($value2 as $key3=> $value3) {
if (is_array($value3))
foreach ($value3 as $key4=> $value4) {
echo 'key4:'.$key4.'='.$value4.'<br>';
}
else echo 'key3:'.$key3.'='.$value3.'<br>';}
echo 'key2:'.$key2.'='.$value2.'<br>'; }
else echo 'key1:'.$key1.'='.$value1.'<br>';
}
}
else
echo 'key:'.$key.'='.$value.'<br>';
}
Может есть вариант разбора без циклов, но и этот работает. Если кто подскажет, как проверить все вложенные массивы, буду признателен.
В результате разбора получим такие данные:
key:time=1565685512032
key2:id=54
key2:name=Екатеринбург
key2:offset=18000000
key2:offsetString=UTC+5:00
key2:showSunriseSunset=1
key2:sunrise=05:20
key2:sunset=20:43
key2:isNight=
key2:skyColor=#59bcfd
key3:temp=19
key3:icon=bkn-d
key3:link=https://yandex.ru/pogoda/yekaterinburg
key2:weather=Array
key4:id=11162
key4:name=Свердловская область
key4:id=225
key4:name=Россия
key2:parents=Array
Екатеринбург, Россия
На форуме: directman66