Cu acest script puteti sa adaugati in site-ul dv. cursul valutar BNR din ziua curenta (Dolari, Euro, Lire Sterline, Aur).
Cursul este preluat direct de pe site-ul BNR, dintr-un fisier .xml oferit de ei, apoi salvat intr-un fisier cache pe serverul dv. Afisarea proprizisa se face cu datele preluate din fisierul cache, acesta fiind actualizat de acelasi script o singura data la 2 ore, pentru a nu fi considerat spam.
Mai jos, sub exemplu gasiti codul PHP, sau il puteti descarca impreuna cu instructiunile de la link-ul Download (sus-dreapta).
- Adaugat intr-o pagina web, acesta va afisa urmatorul rezultat
Curs valutar (BNR) - 22-05-2012 - | ||||||||||||
| ||||||||||||
| Cursuri Jocuri Anime |
<?php
// De la www.marplo.net (02-02-2010)
// Locatia fisierului de la BNR si numele celui pt. cache
$f_bnr = "http://www.bnro.ro/nbrfxrates.xml";
$f_cache = "valutarbnr.xml";
// Matricea cu valutele ce vor fi afisate, si denumirea de afisare
$valuta = array(array("USD",'Dolari'), array("EUR",'Euro'), array("GBP",'Lire S'), array("XAU",'Aur (g)'));
$curs_v = array(); // Variabila ce va contine cursul pt. afisare
$today = date("d-m-Y"); // data zilei
// Functia care returneaza continutul unnei pagini
// Incearca sa-l preia prin curl sau file_get_context
function get_pag($fileurl) {
// Creaza o matrice ce stocheaza mai multe tipuri de agenti (browsere)
$agents[] = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; WOW64; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; Media Center PC 5.0)";
$agents[] = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)";
$agents[] = "Opera/9.63 (Windows NT 6.0; U; ru) Presto/2.1.1";
// Daca poate initializa resursa curl
if ($ch = curl_init()) {
curl_setopt($ch, CURLOPT_URL, $fileurl); // Apeleaza adresa URL specificata
// Trimite header-ele necesare
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_USERAGENT, array_rand($agents, 1)); // Cu agent ales random
$data = curl_exec($ch); // Preia continutul returnat intrun sir
curl_close($ch); // Inchide resursa curl
return $data;
}
else if ($data = file_get_contents($fileurl)) return $data;
else return false;
}
// Daca fisierul de cache e prea vechi se regenereaza
if ( (!file_exists($f_cache)) || (filesize($f_cache) == 0) || (time()-filemtime($f_cache) > 7200) ) {
// Daca poate accesa fisierul extern
if ($stuff = get_pag($f_bnr)) {
$fh = fopen($f_cache,"w");
fputs($fh, $stuff);
fclose($fh);
}
}
// se genereaza inceputul codului tabelului HTML, cu data curenta
$rezult = '<table align="center" border="0" cellspacing="0" cellpadding="5" width="175" style="font-family: Verdana, Arial, sans-serif; font-size: 12px; background-color:#f8f8fe;">
<tr><td bgcolor="#11fefe"><div align="center"><font size="3" color="blue"><b>Curs valutar</b></font> (<i>BNR</i>)<br />
<strong>- '.$today.' -</strong>
</div></td></tr>
<tr><td align="center" valign="top">
<table border="0" cellspacing="5" cellpadding="0" style="font-family: Verdana, Arial, sans-serif; font-size: 12px; background-color:#f8f8fe;">';
// Aici se incearca deschiderea fisierului de la bnr
if ($cursvalutar = file_get_contents($f_cache)) {
// Se parcurge matricea cu $valuta si se stabileste tiparul de cautare
for($i=0; $i<count($valuta); $i++) {
$tipar = '/<Rate currency="'.$valuta[$i][0].'">([0-9.,]+)<\/Rate>/';
// se cauta cursul in fisierul preluat de la bnr sirul care se potriveste tiparului
// extrage valoarea numerica
if (preg_match($tipar, $cursvalutar, $out)) {
$curs_v[] = array($valuta[$i][1], $out[1]);
}
}
// adauga cursul in variabila ce contine codul HTML
if (count($curs_v)>=1) {
for($i=0; $i<count($curs_v); $i++) $rezult .= '<tr><td><b>'.$curs_v[$i][0].'</b></td><td>'.$curs_v[$i][1].'</td><td>Lei</td></tr>';
}
else $rezult .= '<tr><td>Nu a fost gasit nici un curs</td></tr>';
}
else {
$rezult .= "<tr><td>Fisierul pentru citirea cursului nu a putut fi accesat.</td></tr>";
}
// Inchide codul HTML al tabelului
$rezult .= '</table></td></tr>
<tr><td valign"top"> <a href="http://www.marplo.net" target="_blank" style="color:#e8e8fe; font-size:8px;">Cursuri Jocuri Anime</a></td></tr></table>';
echo $rezult; // Afiseaza codul HTML rezultat
?>