Aujourd’hui je vous montre juste une petite astuce pour avoir les taux de conversion de l’Euro vers d’autres devises.
Le site de la banque centrale Européenne publie tous les jours un fichier XML contenant les taux de conversion à jour.
Il fournit également un morceau de code donnant un exemple de manipulation
http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml
Voici le code fourni par le site lui-même pour les développeurs :
<?php //This is a PHP (4/5) script example on how eurofxref-daily.xml can be parsed //Read eurofxref-daily.xml file in memory $XMLContent= file("http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml"); //the file is updated daily between 2.15 p.m. and 3.00 p.m. CET foreach ($XMLContent as $line) { if (ereg("currency='([[:alpha:]]+)'",$line,$currencyCode)) { if (ereg("rate='([[:graph:]]+)'",$line,$rate)) { //Output the value of 1 EUR for a currency code echo '1 € = '.$rate[1].' '.$currencyCode[1].'<br />'; //-------------------------------------------------- // Here you can add your code for inserting // $rate[1] and $currencyCode[1] into your database //-------------------------------------------------- } } } ?> |
Ce code permet d’afficher les taux de conversion Euro vers devise pour toutes les devises.
(source : http://www.ecb.europa.eu/stats/exchange/eurofxref/html/index.en.html)
Et voici un helper tout simple permettant de convertir directement de EUR vers une devise, en utilisant la librairie Dom.
function convertEuroToCurrency($value, $currency) { //ouverture du doc $dom_rates = new DOMDocument(); $dom_rates->load("http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml"); //récupération de l'ensemble des éléments Cube $dom_cubes = $dom_rates->getElementsByTagName('Cube'); $i = 0; $j = 0; $rate_found=false; //tant qu'on a pas trouvé le bon pays, on continue while (!$rate_found && $cube = $dom_cubes->item($i)) { $j = 0; //tant qu'on a pas trouvé le bon pays, on continue while(!$rate_found && $attribute = $cube->attributes->item($j)) { //si on est en train de lire le noeud "temps" on stocke la date if($attribute->name == 'time') $date = $attribute->value; //si l'attribut et "currency" on est en train de lire le code pays, on vérifie aussi que c'est le bon $rate_found = $attribute->name == 'currency' && $attribute->value == $currency; $j++; } $i++; } //si le pays a été trouvé, on affiche le résultat de la conversion if($rate_found) { return "le ".$date." ".$value." EUR = ".($cube->attributes->item($j)->value*$value).' '.$cube->attributes->item($j-1)->value; }else{ return "cette devise n'existe pas"; } } |
Pour tester :
use_helper('Converter'); echo convertEurToCurrency(125, 'USD'); |
Et voilà !

[...] vous avez pu le voir avec les récents posts, nous avons eu pas mal de gestion de facturation: conversion de devises, validation d’un numéro de tva [...]
Enorme ! merci ! je met vite ton site en favoris !