Curs valutar – script php
Urmatorul script preia datele de curs valutar de la BNR si le afiseaza pe site-ul dvs.
<?php
/**
* @author Ionut Mantescu
* @email ionut@digitalmoments.ro
* @company DM Design - a Digital Moments solution
* @website www.dmdesign.ro
* @copyright 2007 - 2009
*
* cerinte script
*
* fopen activ pe server
* xml activ pe server
* fisierul specificat in $file_cache sa fie setat CHMOD pentru scriere (664)
*
*/
error_reporting(E_ALL);
// setare variabile de mediu
$contor = 0;
$taguri = array();
$stare = '';
$fisier_bnr = "http://www.bnro.ro/nbrfxrates.xml";
$fisier_cache = "cursvalutar.xml";
// daca fisierul de cache e prea vechi se regenereaza
if ( (! file_exists($fisier_cache)) || (filesize($fisier_cache) == 0) || (time()-filemtime($fisier_cache) > 3600) )
{
$stuff = file($fisier_bnr);
$fh = fopen($fisier_cache,"w");
foreach ($stuff as $line) { fputs($fh,$line); }
fclose ($fh);
$xld = "Cursul a fost luat de la BNR";
}
else
$xld = "Cursul a fost luat din cache";
// se seteaza functiile de lucru pentru parsarea xml-ului
function startElement($parser, $name, $attrs)
{
global $contor, $taguri, $stare;
$taguri[$contor]['nume'] = $name;
$taguri[$contor]['atribute'] = $attrs;
}
function endElement($parser, $name)
{
global $contor, $taguri, $stare;
$stare = '';
$contor++;
}
function characterData($parser, $data)
{
global $contor, $taguri, $stare;
$taguri[$contor]['info'] = $data;
if (!$stare) {return;}
}
// se parseaza xml-ul si se citesc randurile din el
$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "startElement", "endElement");
xml_set_character_data_handler($xml_parser, "characterData");
if (!($fp = fopen($fisier_cache, "r")))
die("Nu a putut fi citit fisierul XML din cache");
while ($data = fread($fp, 4096))
{
if (!xml_parse($xml_parser, $data, feof($fp)))
{
die(sprintf("Eroare XML: %s la randul %d",
xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_line_number($xml_parser)));
}
}
xml_parser_free($xml_parser);
// se seteaza valorile pentru fiecare moneda
for ($i=0;$i<$contor; $i++)
{
if ( isset($taguri[$i]['nume']) )
if ($taguri[$i]['nume'] == 'SENDINGDATE')
$data_curs = $taguri[$i]['info']; // se preia data specificata in xml
if ( isset($taguri[$i]['atribute']['CURRENCY']) )
$exchrate[$taguri[$i]['atribute']['CURRENCY']] = $taguri[$i]['info']; // se preia valoarea pentru fiecare moneda
//if ($taguri[$i]['atribute']['CURRENCY'] == 'EUR')
//echo '<br />EURO: '.$taguri[$i]['info'];
//if ($taguri[$i]['atribute']['CURRENCY'] == 'USD')
//echo '<br />USD: '.$taguri[$i]['info'];
//echo $i.' - '.var_export($taguri[$i], true)."<br />"; // se afiseaza toate tagurile si valorile gasite
}
// se afiseaza cursurile pe care le dorim
echo '<br />Curs valutar din data: '.$data_curs;
echo '<br />Euro: '.$exchrate['EUR'];
echo '<br />USD: '.$exchrate['USD'];
echo '<br />'.$xld;
?>
URL scurt catre acest articol: http://tinyurl.com/2aqnr93
Tweet