Arany árfolyam érték kiolvasása PHP kóddal

Arany árfolyam érték kiolvasása PHP kóddal
2012-02-20T20:01:19+01:00
2012-02-21T00:57:31+01:00
2022-11-24T18:55:38+01:00
Pluto3D
Sziasztok!

Először is bocs minden hozzáértőtől, ha nagyon laikus lenne a kérdés feltevésének módja.
Olyan lehetőséget keresek, hogy valahogy megkapjam (folyton frissülő használható adatként) az aktuális arany árfolyam értékét. A Magyar Nemzeti Bank szerveréről sikerült hozzájutnom az aktuális valuta árfolyam értékekhez, így már csak az arany értékét kell megszereznem és tudok vele számolni. Az eredményt pedig kiírni egy mezőbe a weboldalon.

Gondoltam Pl. arra, hogy az egyik adatszolgáltató kiírja egy html oldalon az arany árfolyam értékeket és létezik e olyan php kód, amivel ki tudom nyerni az adott html oldalból a kívánt adatot?..majd azt beírni egy változóba, hogy tudjak vele számolni.

Ha tud valaki ilyen kódocskát, annak nagyon örülnék

Itt van a szóban forgó html oldal: Digital Gold Currency Standards Consortium

A valuta árfolyam értékek kiolvasásához ezt a kódot használom, a neten találtam és működik:

<?php $bdy = "<?xml version="1.0" encoding="utf-8"?>"; $bdy.= "<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">"; $bdy.= "<soap:Body>"; $bdy.= "<GetCurrentExchangeRates xmlns="http://www.mnb.hu/webservices/" />"; $bdy.= "</soap:Body>"; $bdy.= "</soap:Envelope>\r\n"; $req = "POST /arfolyamok.asmx HTTP/1.1\r\n"; $req.= "Host: www.mnb.hu\r\n"; $req.= "Connection: Close\r\n"; $req.= "Content-Type: text/xml; charset=utf-8\r\n"; $req.= "Content-Length: ".strlen($bdy)."\r\n"; $req.= "SOAPAction: "http://www.mnb.hu/webservices/GetCurrentExchangeRates"\r\n\r\n"; $fs = fsockopen("www.mnb.hu", 80); fwrite($fs, $req.$bdy); while (!feof($fs)) { $s = fgets($fs); } fclose($fs); //Szétszedjük a tömböt $a=split('unit="1"&gt;',$s); $usd=explode("&lt;/Rate&gt;",$a["27"]); // kiiratás echo $usd[0]; ?>

Mindenkinek nagyon köszönöm a segítséget!!!
Mutasd a teljes hozzászólást!
Ha jól értelmezem, hogy mit szeretnél (Digital Gold Currency Standards Consortium) erről a linkről kiolvasni az arany árfolyamát, és az adatokat egy tömbbe rendezni?

Tessék egy kiindulási alap:
<?php getData("http://dgcsc.org/goldprices.htm"); function getData($url){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); curl_exec($ch); $cont = curl_multi_getcontent($ch); curl_close($ch); preg_match('@<table[^>]*class="whiteback">(.*?)<\/table>@si',$cont, $a); preg_match_all("@<tr[^>]*>(.*?)<\/tr>@si", $a[1], $b, PREG_OFFSET_CAPTURE); foreach($b[0] as $row){ preg_match_all("@<td[^>]*>(.*?)<\/td>@si", $row[0], $c, PREG_OFFSET_CAPTURE); $f[] = $c[0]; } unset($f[0]); print "<pre>"; print_r($f); print "</pre>"; } ?>

Ott van a tömbben az egész táblázatod, innen már dolgozhatsz vele...

/tökfilkó/
Mutasd a teljes hozzászólást!

  • xautohuf.php:
    <?php function out_number($s) { $s = str_replace("\t",' ',$s); $s = str_replace("\r",' ',$s); $s = str_replace("\n",' ',$s); $s = str_replace(".",',',$s); for($i=0;strstr($s,' ');$i++) { $s = str_replace(" ",' ',$s); } return $s; } $open = file('http://xau.cer24.com/huf/?q=1'); for($i=0;$i<count($open);$i++) { if(strstr(strtolower($open[$i]),'1.0 xau')) { print(out_number($open[($i+2)])); $i += 100000; } } ?>
    Mutasd a teljes hozzászólást!
  • Ha jól értelmezem, hogy mit szeretnél (Digital Gold Currency Standards Consortium) erről a linkről kiolvasni az arany árfolyamát, és az adatokat egy tömbbe rendezni?

    Tessék egy kiindulási alap:
    <?php getData("http://dgcsc.org/goldprices.htm"); function getData($url){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); curl_exec($ch); $cont = curl_multi_getcontent($ch); curl_close($ch); preg_match('@<table[^>]*class="whiteback">(.*?)<\/table>@si',$cont, $a); preg_match_all("@<tr[^>]*>(.*?)<\/tr>@si", $a[1], $b, PREG_OFFSET_CAPTURE); foreach($b[0] as $row){ preg_match_all("@<td[^>]*>(.*?)<\/td>@si", $row[0], $c, PREG_OFFSET_CAPTURE); $f[] = $c[0]; } unset($f[0]); print "<pre>"; print_r($f); print "</pre>"; } ?>

    Ott van a tömbben az egész táblázatod, innen már dolgozhatsz vele...

    /tökfilkó/
    Mutasd a teljes hozzászólást!
  • Kell ennél több!?

    <?php function out_number($s) { $s = str_replace("\t",' ',$s); $s = str_replace("\r",' ',$s); $s = str_replace("\n",' ',$s); $s = str_replace(".",',',$s); for($i=0;strstr($s,' ');$i++) { $s = str_replace(" ",' ',$s); } return $s; } if(!$_REQUEST['in']) { $_REQUEST['in']=1; } else { $_REQUEST['in'] = round($_REQUEST['in']); } if(!$_REQUEST['from']) { $_REQUEST['from']='xau'; } if(!$_REQUEST['to']) { $_REQUEST['to']='huf'; } print' <form action="" method="post"> <input type="number" name="in" value="'.($_REQUEST['in']).'" size="3" /> <select name="from"> <option value="xau" '.(($_REQUEST['from']=='xau')?('selected'):('')).'>XAU</option> <option value="usd" '.(($_REQUEST['from']=='usd')?('selected'):('')).'>USD</option> <option value="eur" '.(($_REQUEST['from']=='eur')?('selected'):('')).'>EUR</option> <option value="chf" '.(($_REQUEST['from']=='chf')?('selected'):('')).'>CHF</option> </select> => <select name="to"> <option value="huf" '.(($_REQUEST['to']=='huf')?('selected'):('')).'>HUF</option> <option value="usd" '.(($_REQUEST['to']=='usd')?('selected'):('')).'>USD</option> <option value="eur" '.(($_REQUEST['to']=='eur')?('selected'):('')).'>EUR</option> <option value="chf" '.(($_REQUEST['to']=='chf')?('selected'):('')).'>CHF</option> </select> <input type="submit" value="=" /> '; $open = file('http://'.(strtolower($_REQUEST['from'])).'.cer24.com/'.(strtolower($_REQUEST['to'])).'/?q='.(number_format($_REQUEST['in']))); for($i=0;$i<count($open);$i++) { if(strstr(strtolower($open[$i]),$_REQUEST['in'].'.0 '.(strtolower($_REQUEST['from'])))) { print(out_number($open[($i+2)])); $i += 100000; } } print'</form>'; ?>
    Mutasd a teljes hozzászólást!
  • Szia Tökfilkó!

    Szuper a cucc!
    Ilyet szerettem volna.
    Még annyit kérhetnék, hogy a kód végét módosítanád nekem úgy, hogy mondjuk csak az USA dollár eladási értékét írja ki?....az az első adatoszlopban az USA dollár értéke (Ask price/gram)
    Ha látnám hogy hogyan lehet megkapni egy bizonyos értéket, akkor a többi már menne

    ...és nagyon köszi, szuper a cucc
    Mutasd a teljes hozzászólást!
  • Kicsit átalakítottam neked, mert észrevettem, hogy tele maradt html szeméttel...
    Így devizanem rövifítése alapján tudsz "keresni" a tömbben. Kiveheted USD-t, vagy akár bármelyiket. De a többit már oldd meg te.

    <?php $g = getData("http://dgcsc.org/goldprices.htm"); print "Csak az USD:<hr>"; print "<pre>"; print_r($g['USD']); print "</pre>"; print "Mind:<hr>"; print "<pre>"; print_r($g); print "</pre>"; function getData($url){ $title1 = "Ask price/gram"; $title2 = "Bid price/gram"; $title3 = "Ask price/ozt"; $title4 = "Bid price/ozt"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); curl_exec($ch); $cont = curl_multi_getcontent($ch); curl_close($ch); $cont = preg_replace('/<!--(.|\s)*?-->/', '', $cont); preg_match('@<table[^>]*class="whiteback">(.*?)<\/table>@si',$cont, $a); preg_match_all("@<tr[^>]*>(.*?)<\/tr>@si", $a[1], $b, PREG_OFFSET_CAPTURE); foreach($b[0] as $row){ preg_match_all("@<td[^>]*>(.*?)<\/td>@si", $row[0], $c, PREG_OFFSET_CAPTURE); $t = preg_replace("/[^a-zA-Z]/", "", preg_replace('/&[A-Za-z0-9]+?;/', '', strip_tags($c[0][1][0]))); if($t != "Code" && !empty($t)){ $g[$t]['valuta'] = preg_replace("/[^a-zA-Z ]/", "", preg_replace('/&[A-Za-z0-9]+?;/', '', strip_tags($c[0][0][0]))); $g[$t][$title1] = (float) preg_replace('/[^0-9.]/', '', $c[0][2][0]); $g[$t][$title2] = (float) preg_replace('/[^0-9.]/', '', $c[0][3][0]); $g[$t][$title3] = (float) preg_replace('/[^0-9.]/', '', $c[0][4][0]); $g[$t][$title4] = (float) preg_replace('/[^0-9.]/', '', $c[0][5][0]); } } return $g; }
    Mutasd a teljes hozzászólást!
  • bemásoltam a kódot amit írtál ebbe a fájlba és lefuttatva ezt adja: http://www.aranytartalek.net/teszt1.php
    Mutasd a teljes hozzászólást!
  • De a másik még működött? Az előző kódom? Mert nálam ez is megy...
    http://www.amatormuveszek.hu/www/teszt/goldcurl.php
    Mutasd a teljes hozzászólást!
  • igen..az első az gond nélkül megy
    itt az eredménye: http://www.aranytartalek.net/teszt.php
    Mutasd a teljes hozzászólást!
  • Már nálam is szuperul működik Tökfilkó kódja!
    Valamit elronthattam az előbb a beillesztésnél.

    Nagyon köszönöm még egyszer a segítséget!
    Tökfilkó átlátható és remekül használható kódot küldött.

    GRATULA NEKI!!!

    Tiéd a pont Tökfilkó!
    Mutasd a teljes hozzászólást!
  • Örülök, hogy segíthettem. Akkor a szerverről eltüntettem a cuccot...
    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