Jump to content


Photo

Cotacao_dolar()


  • Faça o login para participar
23 replies to this topic

#1 Balala

Balala

    What you want for yourself?

  • Ex-Admins
  • 3357 posts
  • Sexo:Não informado
  • Localidade:Jaraguá do Sul - SC
  • Interesses:http://forum.wmonline.com.br/index.php?showtopic=5792

Posted 29/06/2005, 16:41

Sintaxe: cotacao_dolar()
Retorno: Array
Descrição: Faça a chamada à função, e terá como retorno uma matriz contendo a Cotação para o Dólar Comercial, Paralelo, Turismo e o Euro. Para preservar a performance do servidor, você pode fazer essa verificação de tempos em tempo, e gravar os dados em seu banco de dados.
Bibliotecas: Nenhuma
Limitações: PHP 4.0.+

function cotacao_dolar() {
  $site   = "http://www.investnews.net/tabelas/moedas.aspx";
  $linhas = file($site);
  foreach($linhas as $num => $linha)
    $linhas[$num] = strip_tags($linha, "<br>");
  $cotacao["dolar_com"] = str_replace(",", ".", substr(trim($linhas[13]), -6));
  $cotacao["dolar_par"] = str_replace(",", ".", substr(trim($linhas[15]), -6));
  $cotacao["dolar_tur"] = str_replace(",", ".", substr(trim($linhas[19]), -6));
  $cotacao["euro"]      = str_replace(",", ".", substr(trim($linhas[21]), -6));
  return $cotacao;
}

Balala - Admin Geral Webfórum - Retired
Twitter
Stop Spreading Lies!
Posted Image

#2 Paulo Freitas

Paulo Freitas

    ××××××× LRU #456504 ××××××× ××××××× LRM #364686 ×××××××

  • Ex-Admins
  • 5612 posts
  • Sexo:Masculino
  • Localidade:Campinas - SP

Posted 29/06/2005, 17:26

Opa ... ;)

Aí ... não seria melhor usar expressões regulares ?! :unsure:

Com expressões regulares fica mais difícil de se errar ... :D

Fiz uma função igualzinha à sua, porém, usa ER para casar os resultados ... :rolleyes:
<?

function cotacao_dolar(){
$info=file_get_contents("http://www.investnews.net/tabelas/moedas.aspx");
preg_match_all("/[0-9]*,[0-9]{4}/",$info,$quotes);
$result["dolar_com"]=$quotes[0][1];
$result["dolar_par"]=$quotes[0][3];
$result["dolar_tur"]=$quotes[0][7];
$result["euro"]=$quotes[0][9];
return $result;
}

?>
Se quiser trocar a sua para essa, sem problemas ... ;)

[]’s :DAté mais

#3 g.miranda

g.miranda

    12 Horas

  • Usuários
  • 226 posts
  • Sexo:Masculino
  • Localidade:Niteroi
  • Interesses:C# \o/<br />Flash, DreamWeaver, Fireworks, Photoshop, Corel Draw, PHP.

Posted 29/06/2005, 18:38

Como faz para mostrar a cotação!? :wacko:
Visite: KinGui
websites, sistemas em php e mysql, programas, aplicativos para celular e outros.

#4 Paulo Freitas

Paulo Freitas

    ××××××× LRU #456504 ××××××× ××××××× LRM #364686 ×××××××

  • Ex-Admins
  • 5612 posts
  • Sexo:Masculino
  • Localidade:Campinas - SP

Posted 29/06/2005, 18:49

Como faz para mostrar a cotação!? :wacko:

Simples amigo ! :D

A função retorna as cotações em um array ... sendo assim:
<?
$cotacoes=cotacao_dolar();
echo "Dólar Comercial: {$cotacoes["dolar_com"]}";
echo "Dólar Pararelo: {$cotacoes["dolar_par"]}";
echo "Dólar Turismo: {$cotacoes["dolar_tur"]}";
echo "Euro: {$cotacoes["euro"]}";
?>
[]’s :DAté mais

#5 g.miranda

g.miranda

    12 Horas

  • Usuários
  • 226 posts
  • Sexo:Masculino
  • Localidade:Niteroi
  • Interesses:C# \o/<br />Flash, DreamWeaver, Fireworks, Photoshop, Corel Draw, PHP.

Posted 29/06/2005, 19:02

blz, e se eu quiser pegar algo que está escrito no meio? como faço? coloco o inicio ao fim?? ex: -2,-10?
Visite: KinGui
websites, sistemas em php e mysql, programas, aplicativos para celular e outros.

#6 Balala

Balala

    What you want for yourself?

  • Ex-Admins
  • 3357 posts
  • Sexo:Não informado
  • Localidade:Jaraguá do Sul - SC
  • Interesses:http://forum.wmonline.com.br/index.php?showtopic=5792

Posted 30/06/2005, 09:10

Eu tinha uma versão também com ER :rolleyes:

Achava que ER só era para validar emails =P
Zuera, mas, ótima observação ;)
Balala - Admin Geral Webfórum - Retired
Twitter
Stop Spreading Lies!
Posted Image

#7 GreyWolf

GreyWolf

    Mestre

  • Usuários
  • 674 posts
  • Sexo:Não informado

Posted 11/07/2005, 17:29

Warning: file_get_contents(): php_network_getaddresses: gethostbyname failed in D:\Musicas\index.php on line 4

Warning: file_get_contents(http://www.investnew...las/moedas.aspx): failed to open stream: No error in D:\Musicas\index.php on line 4

;~
Sempre que tento algo disso da eesses erros hehe

#8 Paulo Freitas

Paulo Freitas

    ××××××× LRU #456504 ××××××× ××××××× LRM #364686 ×××××××

  • Ex-Admins
  • 5612 posts
  • Sexo:Masculino
  • Localidade:Campinas - SP

Posted 11/07/2005, 18:48

Amigo ... acabei de re-verificar minha função, e está funcionando normalmente. (y)

Pelo erro ocorrido, só vejo duas possibilidades: tu tentou usar a função em modo off-line ou seu servidor Web não está conseguindo resolver o DNS do site em questão. :unsure:

[]’s :DAté mais

#9 GreyWolf

GreyWolf

    Mestre

  • Usuários
  • 674 posts
  • Sexo:Não informado

Posted 11/07/2005, 21:23

HmM..
Super Server IIS 4 Em Windows 2000 SP4 =x~
Modo Localhost xP

#10 Paulo Freitas

Paulo Freitas

    ××××××× LRU #456504 ××××××× ××××××× LRM #364686 ×××××××

  • Ex-Admins
  • 5612 posts
  • Sexo:Masculino
  • Localidade:Campinas - SP

Posted 11/07/2005, 21:32

Talvez seja por limitações do IIS ou da versão do PHP em uso; sei lá ! ... :wacko:

Aqui testo localmente sob o Apache 2.0.53 rodando PHP 5.0.4 no WXP SP2 ... nenhum problema ! :)

[]’s :D Até mais

#11 joellazzari

joellazzari

    Novato no fórum

  • Usuários
  • 4 posts
  • Sexo:Não informado

Posted 23/08/2006, 10:46

Peguei essa idéia a alguns dias, funcionou direitinho.

Essa semana mudou o site onde era lido o arquivo (http://www.investnew...las/moedas.aspx) e o script parou de funcionar.

E agora, como vamos achar o arquivo "moedas.aspx" ?

#12 Paulo Freitas

Paulo Freitas

    ××××××× LRU #456504 ××××××× ××××××× LRM #364686 ×××××××

  • Ex-Admins
  • 5612 posts
  • Sexo:Masculino
  • Localidade:Campinas - SP

Posted 23/08/2006, 13:43

E agora, como vamos achar o arquivo "moedas.aspx" ?

Achar não vamos, pois não existe... portanto, bora usar outra fonte! :D

Segue um código mais trabalhado, he he he:

<?php

/*
 * Parâmetros
 *
 * moeda		= com, par, tur (comercial, paralelo, turismo)
 * valor		= c, v (compra, venda)
 * retorna_data = false, true
 * formato_data = ver função date()
 */

function cotacao_dolar($moeda = null, $valor = 'v', $retorna_data = false, $formato_data = 'd/m H:i')
{
	$indicadores = file_get_contents('http://www.panoramabrasil.com.br/index.asp?e=indicadores');
				   preg_match('#(3[0-1]|[1-2][0-9]|0[1-9])/(1[0-2]|0[1-9]) - (2[0-3]|[0-1][0-9]):([0-5][0-9])#', $indicadores, $data);
	$atualizacao = mktime($data[3], $data[4], 0, $data[2], $data[1], date('Y'));
				   preg_match_all('#[0-9]*,[0-9]{4}#', $indicadores, $cotacoes);

	$retorno	 = array('atualizacao' => date($formato_data, $atualizacao),
						 'cotacoes'	=> array(
											  'com' => array(
														   'c' => $cotacoes[0][0],
														   'v' => $cotacoes[0][1],
													   ),
											  'par' => array(
														   'c' => $cotacoes[0][2],
														   'v' => $cotacoes[0][3],
													   ),
											  'tur' => array(
														   'c' => $cotacoes[0][4],
														   'v' => $cotacoes[0][5],
													   ),
										  ),
				   );

	if (isset($retorno['cotacoes'][$moeda]) && in_array($valor, array('c', 'v'))) {
		if ($retorna_data) {
			return array(
					   'atualizacao' => $retorno['atualizacao'],
					   'cotacao'	 => $retorno['cotacoes'][$moeda][$valor],
				   );
		} else {
			return $retorno['cotacoes'][$moeda][$valor];
		}
	} else {
		return $retorno;
	}
}

// Exemplos de uso
print_r(cotacao_dolar());						// (array) Vetor com todos dados
print cotacao_dolar('com');					  // (string) Dólar comercial (venda) -> venda = padrão
print cotacao_dolar('com', 'c');				 // (string) Dólar comercial (compra)
print cotacao_dolar('com', 'v');				 // (string) Dólar comercial (venda)
print_r(cotacao_dolar('com', 'c', true));		// (array) Dólar comercial (compra) + data de atualização no formato padrão (dia/mes hora:minuto)
print_r(cotacao_dolar('com', 'v', true, 'H:i')); // (array) Dólar comercial (venda) + data de atualização no formato especificado (hora:minuto)

?>
[]’s :DAté mais

#13 .:: Julio´Psy ::.

.:: Julio´Psy ::.

    Turista

  • Usuários
  • 48 posts
  • Sexo:Masculino

Posted 24/11/2006, 16:06

<?php 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]{4}).*([0-9],[0-9]{4})",$conteudo,$saida);
//list($lixo,$taxaCompra,$taxaVenda) = $saida;

preg_match("/([0-9],[0-9]{2,}).*([0-9],[0-9]{2,})/", $conteudo, $saida);
$taxaCompra = $saida[1];
$taxaVenda = $saida[2];
echo "
<b><u>Cotação do Dólar</u></b><br>
Compra: <b>$taxaCompra</b><br>
Venda : <b>$taxaVenda</b><br><br>" ?>

Uso esse..

Muito bom. :D

#14 Willian Stevanato

Willian Stevanato

    Novato no fórum

  • Usuários
  • 5 posts
  • Sexo:Não informado

Posted 07/12/2006, 16:28

e nessa função do Paulo Ricardo como faço pra pegar somente o valor (dia/mes hora:minuto) ? Obrigado!
talarico eu ? que nada véi, sua mina que é safada mesmo.

#15 Cassiano Tartari

Cassiano Tartari

    Turista

  • Usuários
  • 30 posts
  • Sexo:Não informado

Posted 30/05/2007, 18:00

Eu fiz uma classe que pega os valores do Banco Central com ER

Ai vai:

<?
class Cotacao {

	var $fp;
	var $conteudo;

	function __construct() {
		$this->Cotacao();
	}

	function Cotacao() {
		$this->conteudo = file_get_contents("http://www.bc.gov.br/htms/infecon/taxas/taxas.htm");
	}

	function getCotacao() {

		eregi("[0-9]{1,}/[0-9]{1,}/[0-9]{1,}",$this->conteudo,$saida2);
		
		list($lixo,$taxaCompra,$taxaVenda) = $saida;
		list($data) = $saida2;

		$cotacoes = array(
									"DATA" => $data,
									"DOLAR_COMPRA" => $taxaCompra,
									"DOLAR_VENDA" => $taxaVenda,
									);

		return $cotacoes;
	}
}
?>





0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq