Dupa cum probabil stiti (ma refer la webmasteri) BNR a scos o metoda developer-friendly de verificare a cursului valutar, online. Pana acum toti programatorii luau pagina http://www.bnr.ro/Ro/Info/ si faceau asocieri ca sa gaseasca cursul euro sau cursul dolarului. De ceva vreme BNR a pus la dispozitie o un fisier in format XML care usureaza mult treaba programatorilor. Fisierul il puteti gasi la adresa http://www.bnro.ro/nbrfxrates.xml
OK, sa o scurtam. Ca sa simplific treaba unora postez aici codul care l-am facut ca sa citesc valutele. Sunt convins ca sunt si altii care au nevoie
Pentru a functiona trebuie sa existe pe server libraria CURL si SimpleXML. Codul e urmatorul:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | < ?php header('Content-type: text/plain'); // Trebuie sa iau XML-ul de pe bnr.ro si sa-l salvez in $curs; $url = 'http://www.bnro.ro/nbrfxrates.xml'; // Daca exista CURL, folosim CURL. Daca nu, folosim file_get_contents(); if( function_exists('curl_init') ) { $curl_handle=curl_init(); curl_setopt($curl_handle,CURLOPT_URL,$url); curl_setopt($curl_handle,CURLOPT_CONNECTTIMEOUT,2); curl_setopt($curl_handle,CURLOPT_RETURNTRANSFER,1); $curs = curl_exec($curl_handle); curl_close($curl_handle); } else { $curs = file_get_contents($url); } // OK, avem fisierul nbrfxrates.xml. Acum trebuie sa il citim // pentru asta avem nevoie de SimpleXML if( !class_exists('SimpleXMLElement') ){ // Daca nu suporta SimpleXML e naspa // Nu extind ca nu am chef sa ma complic inutil // Oricine vrea sa ma completeze e binevenit :-) echo 'Serverul nu suporta SimpleXML'; exit; } // Daca am ajuns pana aici toate-s bune si ne putem pune pe treaba :-) $rates = array(); $xml = new SimpleXMLElement($curs); foreach( $xml->Body->Cube->Rate as $rate ){ $final = array(); foreach( $rate->attributes() as $att => $value ){ if( strcmp($att,'currency') == 0 ) $final['currency'] = (string) $value; if( strcmp($att,'multiplier') == 0 ) $final['multiplier'] = (string) $value; } $final['rate'] = (string) $rate; if( empty($final['multiplier']) ) $final['multiplier'] = 1; array_push($rates,$final); } // Daca am ajuns aici, datele sunt pastrate in $rates print_r($rates); ?> |
La final, in array-ul $rates se gaseste cate un array pentru fiecare valuta. Am incheiat cu un print_r($rates) ca sa se afiseze continutul array-ului, dar se poate inlocui cu o bucla foreach care afiseaza frumos valutele.
Popularity: 2% [?]



Merge super! Multumesc mult, m-ai scutit de cateva ore de codat