Cotação do Dólar e outras moedas
Publicado por Fábio Berbert de Paula (última atualização em 02/12/2015)
[ Hits: 15.882 ]
Homepage: https://fabio.automatizando.dev
Download class.UOLCotacoes.php
Download 1445974778.class.UOLCotacoes.php (versão 2)
Download cotacao.html (versão 3)
Criei esta classe PHP para extrair as cotações das principais moedas usando como fonte de consulta o site de Economia da UOL.
Exemplo de uso:
<?
//importar a classe
require("class.UOLCotacoes.php");
$uol = new UOLCotacoes(); // criar uma instancia da classe
//receber os valores
list($dolarComercialCompra, $dolarComercialVenda, $dolarTurismoCompra, $dolarTurismoVenda, $euroCompra, $euroVenda, $libraCompra, $libraVenda, $pesosCompra, $pesosVenda) = $uol->pegaValores();
?>
A partir do código acima você já tem os valores de câmbio do Dólar, Euro, Libra e Pesos Argentino.
Versão 2 - Enviado por Jailson em 27/10/2015
Changelog: Removido a função split() que retornava aviso no PHP.
Download 1445974778.class.UOLCotacoes.php
Versão 3 - Enviado por Fábio Berbert de Paula em 02/12/2015
Changelog: Nova versão, mas desta vez usando somente jQuery.
<? /* class.uolCotacoes.php - classe usada para extrair as cotações de moedas do dia junto ao site de Economia da UOL - economia.uol.com.br/cotacoes/ Autor: Fábio Berbert de Paula <fberbert@gmail.com> http://www.vivaolinux.com.br/~fabio 17/01/2013 Versão: 1.0 */ class UOLCotacoes { public function pegaValores() { // o fopen também funciona para arquivos da rede, uau! if(!$fp=fopen("http://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)) { // leia o conteúdo da página, uma linha por vez, armazene na variável uolHTML $uolHTML .= fgets($fp); } fclose($fp); /* o bloco do código HTML referente a cotação é assim: <td class="pg-color4"><a href="http://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 $arrayHTML = split("\n", $uolHTML); //loop para cada moeda while( list($moeda, $pattern) = each($patterns) ) { $arrayHTML = split("\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 = $valor[1]; //ler proxima linha $linha = $arrayHTML[++$indice]; //pegar cotacao venda preg_match("/<td>(.*)<\/td>/", $linha, $valor); $venda = $valor[1]; //atribuindo valores ao array de retorno array_push($arrayValores, $compra, $venda); } } // fim while } // fim while return($arrayValores); } //fim function pegaValores } //fim classe ?>
Gerando senhas dinamicamente com PHP
Validar CPF ou CNPJ na mesma função
Expressão Regular para detectar o domínio em uma URL
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
SysAdmin ou DevOps: Qual curso inicial pra essa área? (0)
Melhores Práticas de Nomenclatura: Pastas, Arquivos e Código (3)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta