<?
/*
cotacaoDolar.php - script usado para extrair a cotação atual do dólar junto ao
banco central do governo federal
By: DARK BOMBER <crash_bomber_e@hotmail.com>
www.darkbomber.hpg.com.br
*/
error_reporting(15);
// o fopen também funciona para arquivos da rede, uau !
if(!$fp=fopen("http://www.bc.gov.br/htms/infecon/taxas/taxas.htm" ,"r" )) {
echo "Erro ao abrir a página de cotação" ;
exit ;
}
$conteudo = '';
while(!feof($fp)) { // leia o conteúdo da página
$conteudo .= fgets($fp,1024);
}
fclose($fp);
/*
Na expressão regular abaixo pego os dois números que tem o seguinte formato:
9,9999 (ex.: 2,8182)
O primeiro número é a taxa de compra e o segunda, taxa de venda
*/
eregi("([0-9],[0-9]{1,}).*([0-9],[0-9]{1,})",$conteudo,$saida);
list($lixo,$taxaCompra,$taxaVenda) = $saida;
echo "
<h3>Cotação atual do dólar</h3>
Taxa de compra: <b>$taxaCompra</b><br>
Taxa de venda : <b>$taxaVenda</b><br>
</pre>";
?>Bom proveito!
Conselho:
Ou tu usa a lib curl (//http://br.php.net/curl/) ou usa a função file (//http://br.php.net/manual/pt_BR/function.file.php) para exibir esses resultados. Fica mais profissional. (y)
Exemplo usando a função file:
<?php
$arquivo = "http://www.bcb.gov.br/htms/infecon/taxas/taxas.htm";
$pon = file($arquivo);
$quebra = explode("<td ALIGN=CENTER class=\"fundoPadraoBClaro2\">", $pon[0]);
$quebra2 = explode("</td>", $quebra[1]);
$data = $quebra2[0];
$quebra3 = explode("<td ALIGN=RIGHT class=\"fundoPadraoBClaro2\">", $pon[0]);
$quebra4 = explode("</td>", $quebra3[1]);
$compra = $quebra4[0];
$quebra5 = explode("</td>", $quebra3[2]);
$venda = $quebra5[0];
?>
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; font-family: verdana; font-size: 8 pt" bordercolor="#111111" width="300" id="AutoNumber1">
<tr>
<td bgcolor="#D9C18A" style="border-style: solid; border-width: 1" bordercolor="#FFFFFF" align="center" width="85">
Data</td>
<td bgcolor="#D9C18A" style="border-style: solid; border-width: 1" bordercolor="#FFFFFF" align="center" width="106">
Taxa de Compra</td>
<td bgcolor="#D9C18A" style="border-style: solid; border-width: 1" bordercolor="#FFFFFF" align="center" width="107">
Taxa de venda</td>
</tr>
<tr>
<td bgcolor="#F5ECD6" style="border-style: solid; border-width: 1" bordercolor="#FFFFFF" width="85" align="center">
<?=$data;?></td>
<td bgcolor="#F5ECD6" style="border-style: solid; border-width: 1" bordercolor="#FFFFFF" width="106" align="center">
<?=$compra;?></td>
<td bgcolor="#F5ECD6" style="border-style: solid; border-width: 1" bordercolor="#FFFFFF" width="107" align="center">
<?=$venda;?></td>
</tr>
</table>
E para não perder a viagem, como exibir a cotação atual do Euro:
<?php
$csv = file('http://www5.bcb.gov.br/download/BC1200709140001346816.csv');
foreach ($csv as $line) {
/*
* $date = Data
* $code = Código da Moeda
* $symbol = Símbolo da Moeda
* $type = Tipo da Moeda
* $tax_buy = Taxa / Compra
* $tax_sale = Taxa / Venda
* $parity_buy = Paridade / Compra
* $parity_sale = Paridade / Venda
*/
if (count(explode(';', $line)) > 1) {
list($date, $code, $symbol, $type, $tax_buy, $tax_sale, $parity_buy, $parity_sale) = explode(';', $line);
}
// Converte data
$date = ereg_replace('([0-9]{2})([0-9]{2})([0-9]{4})', '\1/\2/\3', $date);
// Converte taxa de compra
$tax_buy = 'R$' . number_format(str_replace(',', '.', $tax_buy), 5, ',', '');
// Converte taxa de venda
$tax_sale = 'R$' . number_format(str_replace(',', '.', $tax_sale), 5, ',', '');
// Converte paridade de compra
$parity_buy = 'R$' . number_format(str_replace(',', '.', $parity_buy), 5, ',', '');
// Converte paridade de venda
$parity_sale = 'R$' . number_format(str_replace(',', '.', $parity_sale), 5, ',', '');
// Faça o que quiser daqui em diante... :D
print "$date - $tax_buy / $tax_sale - $parity_buy / $parity_sale<br />";
}
?>
Tenham uma boa estada no tópico.