Pl megnyitod ezt a linket fopennel, és valami ereg, stb függvény segítségével kikeresgéled belőle a számokat, és a valutanemeket. Hasonlóan a tegnap rss phaerserhez.
php.ini-ben le van tiltva az url_fopen vagy hasonló nevű bejegyzésben egy link megnyitása. Ugyanis nem biztonságos. Helyette használj socket-eket (lásd manual), azzal tutira menni fog. Persze ez így alacsony szintű, de valamit valamiért...
Szerintem döntsük el, hogy most az árfolyamok kellenek, vagy a HWSW rss-e, mert aszerint kéne pharsert írni..
Az mnb oldala nem lesz jó, nagyon tele van bszva kóddal. Legyen az eco.hu:
Ezzel belekerült a $row változóba a linken található oldal. Most jön az, hogy kivágod belőle ami kell, mondjuk az MNB Deviza nevű táblázatot a jobb hasábból. Ehez az kell, hogy megnézd az oldal forrását, hogy honnét lehet vágni, tehát hogy mihez igazítsd a reguláris kifejezés elejét meg a végét:
if(eregi("MNB DEVIZA</font></td></tr>(.*)</tml>", $row, $resz)) { $out = '<table>'."\n"; $out .= $resz; // ezt vágtad ki $out .= '</table>'."\n"; }
Most már benne van az $out változóban ami kell, már csak ki kell íratni, vagy előtte még cachelni sem ártana.
Hát ja, csak ha megnézed a forrását...
Nemtudom miért nem csinál valamelyik bank RSS-elérést, vagy leglább valami emészthető XML-t. Hírek, részletes időjárás, receptek, névnap minden elérhatő már RSS-ből, csak a valuta nem
Webservice. Erre találták ki. A weblap az ember számára szolgáltat "feldolgozandó adatot", a webservice meg gép számára. Itt van róla infó (nekem is épp a minap súgta meg egy kolléga a linket): http://www.mnb.hu/arfolyamok.asmx
További kulcsszavak a technológiához: SOAP, WSDL.
HTTP/1.1 500 Internal Server Error. Date: Thu, 28 Jul 2005 17:57:50 GMT Server: Microsoft-IIS/6.0 X-Powered-By: ASP.NET X-AspNet-Version: 1.1.4322 Cache-Control: private Content-Type: text/xml; charset=utf-8 Content-Length: 514 soap:Server Server was unable to process request. --> This is an unexpected token. The expected token is 'NAME'. Line 2, position 11. HTTP/1.1 400 Bad Request Content-Type: text/html Date: Thu, 28 Jul 2005 17:57:50 GMT Connection: close Content-Length: 20 Bad Request
Ha minden igaz, akkor ha azt post-olod, ami ezen az oldalon felül van: http://www.mnb.hu/arfolyamok.asmx?op=GetCurrentExchangeRates
úgy, hogy a content-length headerbe a kiemelt szöveg helyére beírod a törzsben lévő xml doksi hosszát (ha jól számoltam 312), akkor az alatta lévő válaszban a kiemelt string helyén valami ilyesmi fog szerepelni (természetesen sortörés és egyéb whitespace nélkül):
Tessék, itt a kód, ez megcsinálja a lekérdezést. A 11-edik sorban ($s) van az egész visszaadott XML, ezt a php parserével szétszeded és máris megvan az adat.
Ha viszont a hostolt oldalon nincs engedélyezve az fsockopen, hát az szívás. Ha az 5-ös PHP-t használod, akkor abban már van gyári SOAP támogatás. Lehet, hogy azzal egyszerűbben megoldható.
Nekem működik. Tudsz még ilyen webservice forrásokat, vagy minek hívják?
De ehez akkor mindegyikhez külön kell írni xml értelmezőt nem arra amit visszaad?
Az MNB-ét is hetekig kerestem. Se google, se semmi eredmény. Aztán e-mailben kaptam meg a címet egy kollégától.
A különböző XML-ek parsolásáról: hát a WSDL alapvető feladata az volna, hogy azonosítsa a hívható "függvényeket", a bemeneti paramétereket és a kimeneti paramétereket típussal együtt. Erre aztán mindenféle automatikus eszköz van, a .NET például a WSDL-ből már olyan szinten kódot generál, hogy ott már csak meg kell hívni a megfelelő metódust, és az ember ölébe is pottyantak a visszaadott adatok.
Jelen esetben ez a WSDL (http://www.mnb.hu/arfolyamok.asmx?WSDL) nem a legjobban kidolgozott, mert egy teljes XML részfát ad vissza nyers string-ként, holott visszaadhatná ezt mondjuk tömbként is.
Akkor ezt az üzit kapom:
Warning: feof(): supplied argument is not a valid File-Handle resource in /home/friends-lan/public_html/xml/index.php on line 84
Nem kell saját magadnak szórakoznod fopennel meg ilyen hülyeségekkel, ennél a félmegoldásnál sokkal jobbat kapsz készen a PEAR ExhangeRates osztályával...
Egy xml árfolyamlistából tudsz vele lekérdezni árfolyamokat (a default xmlforrása tökéletes szerintem), és konvertálgatni köztük, formátumot beállítani, stb.
gyakorlatilag mindössze átkonvertálod minden érintett pénznem 1 árát forintra, és megkapod hány forintnak felel meg...
A táblázat viszont már HTML, így ha egyéb adatokat is tartalmaz, akkor azt ki kell bányásznod valahonnan. Ez megtehető magából a html forrásból is, de én valószínűbbnek tartom, hogy az a html is valami xml féle adatforrást használ, tehát pear xml-el azt is meg lehet egyszerűen oldani, csak meg kell keresni (érdeklődni) hol a forrás.