MSN időjárás api

MSN időjárás api
2013-06-20T15:34:17+02:00
2013-06-20T21:27:20+02:00
2022-11-29T06:40:37+01:00
Pacee
Sziasztok!

Mint talán tudjátok, a Google után a Yahoo is ellehetetlenítette az időjárás api-jának használatát. Az MSN-nek viszont még van ilyen szolgáltatása:

Orosháza, Hungary - MSN Weather


$url='http://weather.msn.com/find.aspx?outputview=search&weasearchstr='.$l_city.'&weadegreetype=C&culture=hu-HU'; $dataInISO=@file_get_contents($url); $dataInUTF = mb_convert_encoding($dataInISO, "UTF-8", "iso-8859-2"); $xml = simplexml_load_string($dataInUTF);

Itt viszont elakadtam. Hogy tudom változókba rakni a kapott értékeket?
Köszönöm előre is a segítségeteket!
Mutasd a teljes hozzászólást!
$adatok = $xml->weather[0]->attributes(); $hol = (string) $adatok->weatherlocationname; $egyezes = (string) $adatok->searchscore; $curr = $xml->weather[0]->current->attributes(); $homerseklet = (string) $curr->temperature;
Mutasd a teljes hozzászólást!

  • Mutasd a teljes hozzászólást!
  • Lehet, hogy a nagy melegtől van, de nem igazán látom át, hogy ezzel mitől jutok előbbre. print_r-rel nekem is működik a kiírás, a probléma azzal van, hogy a print_r-rel kiírt "cuccot" kéne külön -külön változókba tennem.
    Mutasd a teljes hozzászólást!
  • A print_r()-es dolgodra
    $var = print_r($what, true);
    Mutasd a teljes hozzászólást!
  • Hali!

    Ha már egy print_r-el ki tudod írni az már jó.
    Akkor van egy tömböd amiben benne vannak az elemek, próbáld meg nem print_r-el kiírnatni hanem egy foreach vagy while ciklussal.
    Majd azon belül formázhatód, összefűzheted egy váltózóba stb.
    Mutasd a teljes hozzászólást!
  • Ennek mi értelme?
    Mutasd a teljes hozzászólást!
  • $adatok = $xml->weather[0]->attributes(); $hol = (string) $adatok->weatherlocationname; $egyezes = (string) $adatok->searchscore; $curr = $xml->weather[0]->current->attributes(); $homerseklet = (string) $curr->temperature;
    Mutasd a teljes hozzászólást!
  • Nagyon szépen köszönöm a segítségedet!

    Lehetek olyan pofátlan, hogy egy kis magyarázatot is kérjek hozzá? Szeretném egy kicsit megérteni ezt az XML-->PHP témát. A hőmérséklet meghatározásához miért így kellett implementálni a $curr változót:
    $curr = $xml->weather[0]->current->attributes();

    Ez a rész viszont már teljesen világos: $homerseklet = $curr->temperature;

    Ha pedig valakinek szüksége lenne rá, ezekkel a kódokkal tud saját képeket rendelni az egyes kondíciókhoz:

    0, 1 ,2, 3 ,4, 17, 35 - Thunderstorm
    5 - Rain/Snow mix
    6 - Sleet/Snow mix
    7 - Rain/Snow/Sleet mix
    8,9 - Icy
    10 - Rain/Sleet mix
    11 - Light Rain
    12 - Rain
    13 - Light Snow
    14,16,42,43 - Snow
    15 - Blizzard
    18,40 - Showers
    19 - Dust
    20 - Fog
    21 - Haze
    22 - Smoke
    23,24 - Windy
    25 - Frigid
    26 - Cloudy
    27,29,33 - Partly Cloudy (night)
    28,30,34 - Partly Cloudy
    31 - Clear (night)
    32 - Clear
    36 - Hot
    37,38 - Scattered Thunderstorms
    39 - Scattered Showers
    41 - Scattered Snow Showers
    44 - N/A
    45 - Scattered Rain Showers (night)
    46 - Scattered Snow Showers (night)
    47 - Scattered Thunderstorms (night)
    Mutasd a teljes hozzászólást!
  • Az xml-t kell értelmezni, itt egy minta:

    <weatherdata> <weather weatherlocationcode="wc:USNY0996" weatherlocationname="New York, NY" zipcode="10038" weatherfullname="New York" searchlocation="" searchdistance="" searchscore="" url="http://local.msn.com/weather.aspx?eid=23164&amp;q=New+York-NY&amp;zip=10038" imagerelativeurl="http://blu.stc.s-msn.com/as/wea3/i/en-us/" degreetype="F" provider="iMap" isregion="" region="" alert="" searchresult="New York, NY (closest location for )" lat="40.7101493" lon="-74.00658" entityid="23164"> <current temperature="77" skycode="32" skytext="Clear" /> </weather> </weatherdata>

    $xml->weather // az xml gyökerében levő weather eleme(ke)t adja vissza $xml->weather[0] // ebből több lehet, az elsőre van szükségünk (0 az indexe) $xml->weather[0]->current // azon belül a current elem $xml->weather[0]->current->attributes() // a current elemnek az attribútumait adja vissza

    De lehetne akár így is hivatkozni rá:
    $xml->weather[0]->current->attributes()->temperature $xml->weather[0]->current->attributes()->skycode

    Csak ha több elemet akarsz lekérdezni innen, márpedig itt azt kell (legalább a skycode miatt), akkor érdemes a közös őst külön változóba rakni (ezt raktam a $curr-ba).
    Mutasd a teljes hozzászólást!
  • Köszönöm szépen ismét a segítségedet! Ami még nem tiszta, hogy a <weatherdata>-t miért nem kell beleírni az "elérési útba", de a többi mind tiszta így már. Sikerült is megcsinálnom két napos előrejelzéssel az időjárásjelentést.
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd