Blog

Em por

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.

Cotações para compra e venda de Moedas estrangeiras com PHP 

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.

Veja Também:

Artigos Relacionados a categoria: Blog

Olá, deixe seu comentário para Cotações para compra e venda de Moedas estrangeiras com PHP

Enviando Comentário Fechar :/

...AINDA NÃO VIU NOSSO PORTFÓLIO?

Se ainda não viu nosso Portfólio e quer conhecer um pouco mais... aproveite e veja agora mesmo e tenha um site de qualidade para o seu negócio!

[contato]
Ver o Portfólio Agora