PHP
Cotações para compra e venda de Moedas estrangeiras com PHP
No tutorial de hoje vamos desenvolver uma classe que irá extrair as cotações de moedas estrangeiras de compra e venda do dia junto ao site de Economia da UOL dinamicamente.
Recentemente precisei muito utilizar um script que buscasse a cotação do Dólar dinamicamente em outro site, porém muitas das pesquisas que realizei, os scripts estavam todos antigos e não funcionando mais, pois as páginas que serviam o serviço foram atualizadas.
Procurando no site vivaolinux encontrei uma solução atualizada e funcional, vou compartilhar aqui também para poder disseminar este script com todos.
Primeiramente você deve criar um arquivo chamado UOLCotacoes.class.php que no caso, será a nossa classe a ser utilizada em nosso site:
class UOLCotacoes {
public function pegaValores() {
// o fopen também funciona para arquivos da rede, uau!
if(!$fp=fopen("//economia.uol.com.br/cotacoes/" ,"r" )) {
echo "Erro ao abrir a página de cotação" ;
return(0);
}
//variáveis de classe
$arrayValores = array();
//inicio do processamento - ler página
$uolHTML = "";
while(!feof($fp)) {
$uolHTML .= fgets($fp);
}
fclose($fp);
/* o bloco do código HTML referente a cotação é assim:
<td class="pg-color4"><a href="//economia.uol.com.br/cotacoes/cambio/dolar-comercial-estados-unidos/">Dólar com.</a></td>
<td>2,0435</td>
<td>2,0442</td>
Então o que farei é extrair os valores 2,0435 (compra) e 2,0442 (venda)
O mesmo conceito se repete para as demais cotações
*/
//array contendo as expressoes regulares que indicam cada moeda
$patterns = array(
"dolarComercial" => "/pg-color4.*dolar-comercial-estados-unidos/",
"dolarTurismo" => "/pg-color4.*dolar-turismo-estados-unidos/",
"euro" => "/pg-color4.*euro-uniao-europeia/",
"libra" => "/pg-color4.*libra-esterlina/",
"pesos" => "/pg-color4.*peso-argentina/",
);
$uolHTML = preg_replace("/.*div id=.cambio.>/", "", $uolHTML);
$uolHTML = preg_replace("/<tr>/", "\n<tr>", $uolHTML); //acrescentar quebra de linha
$uolHTML = preg_replace("/<td/", "\n<td", $uolHTML); //acrescentar quebra de linha
//loop para cada moeda
while( list($moeda, $pattern) = each($patterns) ) {
$arrayHTML = explode("\n", $uolHTML);
//loop por cada linha da pagina HTML
while ( list($indice, $linha) = each($arrayHTML) ) {
//se bloco HTML casa com a pattern da moeda do looping atual...
if (preg_match($pattern, $linha)) {
//print "Encontrei '$pattern' em: $linha\n\n";
//ler proxima linha
$linha = $arrayHTML[++$indice];
//pegar cotacao compra
preg_match("/<td>(.*)<\/td>/", $linha, $valor);
$compra = substr($valor[1],0,4);
//ler proxima linha
$linha = $arrayHTML[++$indice];
//pegar cotacao venda
preg_match("/<td>(.*)<\/td>/", $linha, $valor);
$venda = substr($valor[1],0,4);
//atribuindo valores ao array de retorno
array_push($arrayValores, $compra, $venda);
}
} // fim while
} // fim while
return($arrayValores);
} //fim function pegaValores
} //fim classe
Feito nossa classe agora é só utilizá-la instanciando ela e chamando nosso método pegaValores().
$UOLCotacoes = new UOLCotacoes;
$Cotacoes = $UOLCotacoes-> pegaValores();
Var_dump($Cotacoes);
Apresentando o var_dump você terá um array com todas as cotações que desejou buscar na classe, com os valores de venda e compra.
Gigasystems Login:
Informe seu e-mail abaixo para continuar!
XVeja Também:
Artigos Relacionados a categoria: PHP
Gerenciador de dependências Composer
14 January de 2016
Erro ao acessar um arquivo externo com o comando file_get_content
04 November de 2015
Baixando anexo do email no servidor com IMAP e PHP
27 August de 2015
Ler Email do servidor com IMAP e PHP
19 August de 2015
Olá, deixe seu comentário para Cotações para compra e venda de Moedas estrangeiras com PHP