Recentemente implementei a mesma coisa, mas usando a API do Google. O URL da consulta é semelhante a este:
http://www.google.com/ig/calculator?hl=en&q=1GBP=?USD
Leva 3 parâmetros. O primeiro parâmetro é o valor, seguido pelo código de moeda ISO 4217 do qual você está convertendo, um sinal de igual e um ponto de interrogação e o código de moeda para o qual você está convertendo. Você pode encontrar uma lista de códigos compatíveis com o Google aqui . A resposta à consulta será semelhante a esta:
{lhs: "1 British pound",rhs: "1.6132 U.S. dollars",error: "",icc: true}
Isso é bastante autoexplicativo, então não entrarei em detalhes aqui. É assim que lidei com a resposta da consulta:
function convert_currency($amount, $from_code, $to_code){
ini_set('max_execution_time', 60);
$temp = 'http://www.google.com/ig/calculator?hl=en&q=' . $amount . $from_code . '=?' . $to_code;
$response = file_get_contents($temp);
$result_string = explode('"', $response);
$final_result = $result_string['3'];
$float_result = preg_replace("/[^0-9\.]/", '', $full_result);
return $float_result;
}
Tenho certeza de que está longe de ser a maneira mais elegante de fazer isso, mas sou muito novo em PHP. Espero que ajude!