Portal de construção - Casa. Aquecedores de água. Chaminés. Instalação de aquecimento. Aquecedores. Equipamento

Como obter taxas de câmbio oficiais para uma determinada data em PHP. Como obter taxas de câmbio oficiais para uma determinada data em PHP Baixar taxas de câmbio script php

Existem muitos scripts na Internet que mostram as taxas de câmbio. Mas eu precisava do dólar e do euro do banco central. Decidi procurar scripts que mostrem taxas de câmbio oficiais em uma determinada data. eu tropecei artigo interessante classificação de tabela jQuery. Lá no roteiro Analisador de taxa de câmbio PHP" Um documento xml é roubado usando expressões regulares. Expressões regulares são usadas ativamente no roubo de código. O script funciona muito bem, mas tem características próprias. Ele gera uma tabela em HTML com grande quantia moedas. Eu preciso de formar um array JSON a partir de uma tabela com taxas de câmbio. Essa matriz é como uma salsicha. Isto é o que os programadores chamam de array. Existem salsichas muito grandes em grandes quantidades)))

/* * getArr() * taxas de câmbio do banco central * documento xml é analisado * */ function getArr() ( $url = "http://www.cbr.ru/scripts/XML_daily.asp?date_req=". date("d/m/Y",strtotime("+0 dia")); $cbr_xml = str_replace(array("\n","\r","\t"),"",getContentPage($url )); if(preg_match_all("~ (.*?) ~i",$cbr_xml,$Valute)) ( foreach($Valute as $data) ( preg_match("~ (.*?) ~i",$data ,$CharCode); preg_match("~ (.*?) ~i",$data,$NumCode); $arr[$CharCode]["num_code"].= $NumCode; preg_match("~ (.*?) ~i",$dados,$Nominal); $arr[$CharCode]["nominal"] = $Nominal ; preg_match("~ (.*?) ~i",$dados,$Nome); $arr[$ CharCode]["nome"].= toUtf8($Nome); preg_match("~ (.*?) ~i",$dados,$Valor); $arr[$CharCode]["valor"].= $Valor ; $i++; ) return $arr; ) ) função getContentPage($url) ( $c = curl_init($url); curl_setopt($c, CURLOPT_RETURNTRANSFER, 1); curl_setopt($c, CURLOPT_FOLLOWLOCATION, 1); $text = curl_exec($c); curl_close($c); return $text; ) //codifica para função Utf8 toUtf8($str) ( return mb_convert_encoding($str, "utf-8", "windows-1251"); ) $arr = getArr(); eco json_encode($arr); /* ( "EUR":("num_code":"978", "nominal":"1", "nome":"\u0415\u0432\u0440\u043e", "valor":"63,6090"), "USD":("num_code":"840", "nominal":"1", "nome":"\u0414\u043e\u043b\u0430\u0440 \u0421\u0428\u0410", "valor": "58.0374") )*/

Você pode ver a taxa de câmbio de hoje e a taxa de câmbio de ontem. A função strtotime("+0 day") permite alterar a hora. Claro, quantos zeros você não soma de qualquer maneira, o valor da variável não mudará. Deixei essa parte do código para que você possa alterar a hora a qualquer momento. Tive que reorganizar um pouco o array. Usei a variável $CharCode como chave do array. Existem muitos outros arrays em meu grande array, e você só pode acessar um determinado array por chave (EUR). No meu caso, a variável $CharCode assume os seguintes valores:

  1. AUD => dólar australiano
  2. AZN => Manat do Azerbaijão
  3. GBP => Libra Esterlina Britânica
  4. AMD => dramas armênios
  5. BYR => rublo bielorrusso
  6. BGN => Lev Búlgaro
  7. BRL => real brasileiro
  8. HUF => forint húngaro
  9. DKK => coroa dinamarquesa
  10. USD => dólar americano
  11. EUR => Euro
  12. INR => Rúpias Indianas
  13. KZT => tenge do Cazaquistão
  14. CAD => dólar canadense
  15. KGS => som do Quirguistão
  16. CNY => Yuan Chinês
  17. MDL => lei da Moldávia
  18. NOK => coroa norueguesa
  19. PLN => Zloty polonês
  20. RON => novo leu romeno
  21. XDR => SDR (direitos de saque especiais)
  22. SGD => dólar de Singapura
  23. TJS => somoni tadjique
  24. TENTE => Lira turca
  25. TMT => Novo manat turcomano
  26. UZS => soma uzbeque
  27. UAH => hryvnia ucraniana
  28. CZK => Coroa Tcheca
  29. SEK => coroa sueca
  30. CHF => franco suíço
  31. ZAR => Rand Sul-africano
  32. KRW => Won Coreano
  33. JPY => Iene japonês

Estou interessado apenas em USD e EUR. Eu não retirei de

Muitos de vocês já viram repetidamente que alguns sites exibem taxas de câmbio. É claro que os próprios administradores desses sites não os alteram diariamente (espero). Eles os baixam do site do Banco Central. E neste artigo darei o código Script PHP para baixar taxas de câmbio do site do Banco Central e exibi-los na página.

Aqui está o código do script:

$data = data("d/m/A"); //Data de hoje no formato requerido
$link = "http://www.cbr.ru/scripts/XML_daily.asp?date_req=$date"; // Link para arquivo XML com taxas de câmbio
$conteúdo = arquivo_get_contents($link); // Baixa o conteúdo da página
$dom = new domDocument("1.0", "cp1251"); //Cria o DOM
$dom->loadXML($conteúdo); // Carrega o documento XML no DOM
$root = $dom->documentElement; // Obtém o elemento raiz
$childs = $root->childNodes; // Obtém uma lista de elementos filhos
$dados = array(); // Conjunto de dados
para ($i = 0; $i< $childs->comprimento; $i++) (
$childs_new = $childs->item($i)->childNodes; // Obtém nós filhos
para ($j = 0; $j< $childs_new->comprimento; $j++) (
/* Procuramos as moedas que nos interessam */
$el = $childs_new->item($j);
$código = $el->nodeValue;
if (($código == "USD") || ($código == "EUR")) $dados = $childs_new; //Adiciona as moedas necessárias ao array
}
}
/* Percorre o array com dados de moeda */
para ($i = 0; $i< count($data); $i++) {
$lista = $dados[$i];
para ($j = 0; $j< $list->comprimento; $j++) (
$el = $lista->item($j);
/* Exibir taxas de câmbio */
if ($el->nodeName == "Nome") echo $el->nodeValue." - ";
elseif ($el->nodeName == "Valor") echo $el->nodeValue."
";
}
}
?>

Tentei comentar cuidadosamente o código, para que não haja problemas em entendê-lo. Além disso, para entender por que existem tantos e por que tais ciclos, bem como de onde vêm certas condições, recomendo fortemente que você siga o link do código (basta substituir a data). Então você verá Documento XML, e será muito mais fácil entender por que esse código foi escrito.

Boa tarde queridos amigos. Como sabem, recentemente (11 de fevereiro) ocorreu outra desvalorização no Cazaquistão, esta “Terça-Feira Negra” como foi chamada por muitos na Internet, atingiu o bolso de muitos. Não escreverei outro artigo negativo sobre este assunto. Eu não acho que seja necessário. O que está feito está feito. Mas naquele dia infeliz, fiquei muito indignado com o fato de que em nenhum lugar da Internet era possível saber a cotação exata do dólar, do euro ou de outra moeda estrangeira. Todos os sites conhecidos e desconhecidos (olá google) não estavam disponíveis para mim. Talvez alguns sites tenham caído em desgraça entre os usuários do Cazaquistão e não estivessem preparados para tal carga de usuários. Mas a verdade é que os sites não funcionaram.

E à noite, quando minhas paixões pela desvalorização começaram a diminuir e meus nervos começaram a se acalmar, decidi que precisava escrever para mim mesmo um pequeno informante sobre taxas de câmbio em meu pequeno e aconchegante blog. Como falei acima, não queria usar widgets de outros sites, pois esses sites estavam “mentindo” quando todo o kaznet queria saber essa maldita taxa de câmbio. :) Abaixo está o script do informante php, acho que o script não precisa de comentários:

$quantia = "1";
$de = "USD";
$de = "EUR";
$de = "RUB";
$to="KZT";
$i=0;
enquanto($i<= 2){
$eu++;
$get=explodir(" ",$obter);
$get=explodir("
",$obter);


";
}
?>

O script é universal, você pode alterar a variável $ para para outra moeda na qual você deseja converter, bem como aumentar ou alterar matrizes $de[?], adicione outras moedas, mas não se esqueça de alterar a condição do loop caso tenha aumentado o número de moedas retiradas. Você pode obter o identificador (nome) das moedas no link - https://www.google.com/finance/converter. Como você provavelmente entendeu, o script analisa esta página do Google em um loop e obtém as informações necessárias.

Como instalar este script no seu site? Se você possui um mecanismo wordpress, precisará instalar o plugin " Widget de código PHP"e selecione este widget e adicione todo o código lá. Esta é a maneira mais fácil. Se houver algum problema, você sempre pode desabilitar o plugin e tudo voltará como estava. Não ofereço opções complexas para instalar o script. Você pode me enviar um e-mail e tentarei ajudá-lo. Espero que este artigo tenha sido útil para você. :)

P.S: Para mim, otimizei um pouco o script (adicionei cache) e dei a tarefa cron para atualizar o script uma vez por hora.Minha versão salva o arquivo *.html e eu o exibo em widgets, via ajax.

// Inicia o buffer de saída
ob_start();

$quantia = "1";
$de = "USD";
$de = "EUR";
$de = "RUB";
$to="KZT";
$i=0;
enquanto($i<= 2){
$eu++;
$get = file_get_contents("https://www.google.com/finance/converter?a=$amount&from=$from[$i]&to=$to");
$get=explodir(" ",$obter);
$get=explodir("
",$obter);
$converted_amount = preg_replace("/[^0-9\.]/", null, $get);
$valor_convertido = round($valor_convertido,2);
echo $quantia." ".$from[$i]." = ".$converted_amount." ".$to."
";
}

// salva a saída capturada no arquivo .html
file_put_contents("moeda.html", ob_get_contents());
//termina o buffer e exibe a página
ob_end_flush();
?>

Salve o script no formato *.php, é aconselhável salvá-lo em uma pasta separada (por exemplo, na pasta "scripts", para não entupir o site. Depois disso, você precisará adicionar uma tarefa no cron, acesse o script a cada n horas. E uma vez pelo navegador, acesse manualmente o script para que ele crie um arquivo html, ao qual nos referiremos futuramente.A seguir, você pode exibir o script em widgets através do iframe:


função show_temp()
{
$.ajax((
url: "http://seusite/scripts/currency.html",
cache: falso
sucesso: função(html)(
$("#moeda").html(html);
}
});
}
$(documento).ready(função()(
show_temp();
});

Este tipo de saída permitirá que você altere o tamanho e a cor da fonte ou adicione quaisquer outros efeitos via CSS (Cascading Style Sheet).

Uma versão otimizada do script não carrega o servidor e acessa constantemente o Google. Você pode implementar o cache de forma diferente e verificar por data para não usar o cron. Mas pessoalmente, procedi de um simples. Não gosto de ser inteligente . :)

Máquina de lavar quebrada? 1v.kz vai ajudar! - Reparação de máquinas de lavar em Almaty:

Profissionais de todas as partes da cidade

Em alguns casos, ao trabalhar com comércio, torna-se necessário obter informações atualizadas sobre a taxa de câmbio de uma determinada moeda. O Banco Central é a melhor fonte desses dados e, por fornecer informações abertas e oportunas sobre a taxa de câmbio em formato XML, é pecado não utilizá-las.

Esta função se parece com isto:

Função get_currency($currency_code, $format) ( $date = date("d/m/Y"); // Data atual $cache_time_out = "3600"; // Vida útil do cache em segundos $file_currency_cache = __DIR__."/XML_daily . asp"; if(!is_file($file_currency_cache) || filemtime($file_currency_cache)< (time() - $cache_time_out)) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://www.cbr.ru/scripts/XML_daily.asp?date_req=".$date); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 0); $out = curl_exec($ch); curl_close($ch); file_put_contents($file_currency_cache, $out); } $content_currency = simplexml_load_file($file_currency_cache); return number_format(str_replace(",", ".", $content_currency->xpath("Valor")->Valor), $formato); )

Ele contém as linhas:

$data = data("d/m/A"); //Data atual $cache_time_out = "3600"; //Vida útil do cache em segundos

são responsáveis ​​pela data (no nosso caso, é a atual) e pelo tempo de vida do cache, respectivamente. Como o Banco Central não atualiza os dados monetários com tanta frequência, você não deve incomodá-lo assim toda vez que os utiliza. Você pode alterar os valores nessas linhas (opcionalmente) para os seus próprios.

O uso da função é o seguinte:

echo get_currency("USD", 3);

Aqui " USD”É um código de moeda simbólico (no nosso caso, é o dólar americano) e“ 3 " - vários símbolos após a vírgula.

Lista aceitável de moedas fornecida pelo Banco Central da Federação Russa (no momento da redação deste artigo) na forma de "código de moeda de caractere - denominação e nome":

AUD - 1 dólar australiano AZN - 1 manat do Azerbaijão GBP - 1 libra esterlina AMD - 100 drams armênios BYN - 1 rublo bielorrusso BGN - 1 lev búlgaro BRL - 1 real brasileiro HUF - 100 HUF HKD - 10 dólares de Hong Kong DKK - 10 dinamarqueses coroa USD - 1 dólar americano EUR - 1 euro INR - 100 rúpias indianas KZT - 100 tenge do Cazaquistão CAD - 1 dólar canadense KGS - 100 soms do Quirguistão CNY - 10 yuans chineses MDL - 10 MDL NOK - 10 coroas norueguesas PLN - 1 polonês PLN RON - 1 leu romeno XDR - 1 SDR (direitos de saque especiais) SGD - 1 dólar de Cingapura TJS - 10 somoni tadjique TRY - 1 lira turca TMT - 1 novo manat turcomeno UZS - 10.000 som uzbeque UAH - 10 hryvnia ucraniana CZK - 10 CZK SEK - 10 SEK CHF - 1 franco suíço ZAR - 10 rands sul-africanos KRW - 1.000 ROK won

Espero que a função encontre seu lugar no seu projeto. Se você tiver alguma dúvida ou algo parecer incompreensível, escreva sobre isso nos comentários deste artigo.

Em alguns casos, ao trabalhar com comércio, torna-se necessário obter informações atualizadas sobre a taxa de câmbio de uma determinada moeda. O Banco Central é a melhor fonte desses dados e, por fornecer informações abertas e oportunas sobre a taxa de câmbio em formato XML, é pecado não utilizá-las.

Esta função se parece com isto:

Função get_currency($currency_code, $format) ( $date = date("d/m/Y"); // Data atual $cache_time_out = "3600"; // Vida útil do cache em segundos $file_currency_cache = __DIR__."/XML_daily . asp"; if(!is_file($file_currency_cache) || filemtime($file_currency_cache)< (time() - $cache_time_out)) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://www.cbr.ru/scripts/XML_daily.asp?date_req=".$date); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 0); $out = curl_exec($ch); curl_close($ch); file_put_contents($file_currency_cache, $out); } $content_currency = simplexml_load_file($file_currency_cache); return number_format(str_replace(",", ".", $content_currency->xpath("Valor")->Valor), $formato); )

Ele contém as linhas:

$data = data("d/m/A"); //Data atual $cache_time_out = "3600"; //Vida útil do cache em segundos

são responsáveis ​​pela data (no nosso caso, é a atual) e pelo tempo de vida do cache, respectivamente. Como o Banco Central não atualiza os dados monetários com tanta frequência, você não deve incomodá-lo assim toda vez que os utiliza. Você pode alterar os valores nessas linhas (opcionalmente) para os seus próprios.

O uso da função é o seguinte:

echo get_currency("USD", 3);

Aqui " USD”É um código de moeda simbólico (no nosso caso, é o dólar americano) e“ 3 " - vários símbolos após a vírgula.

Lista aceitável de moedas fornecida pelo Banco Central da Federação Russa (no momento da redação deste artigo) na forma de "código de moeda de caractere - denominação e nome":

AUD - 1 dólar australiano AZN - 1 manat do Azerbaijão GBP - 1 libra esterlina AMD - 100 drams armênios BYN - 1 rublo bielorrusso BGN - 1 lev búlgaro BRL - 1 real brasileiro HUF - 100 HUF HKD - 10 dólares de Hong Kong DKK - 10 dinamarqueses coroa USD - 1 dólar americano EUR - 1 euro INR - 100 rúpias indianas KZT - 100 tenge do Cazaquistão CAD - 1 dólar canadense KGS - 100 soms do Quirguistão CNY - 10 yuans chineses MDL - 10 MDL NOK - 10 coroas norueguesas PLN - 1 polonês PLN RON - 1 leu romeno XDR - 1 SDR (direitos de saque especiais) SGD - 1 dólar de Cingapura TJS - 10 somoni tadjique TRY - 1 lira turca TMT - 1 novo manat turcomeno UZS - 10.000 som uzbeque UAH - 10 hryvnia ucraniana CZK - 10 CZK SEK - 10 SEK CHF - 1 franco suíço ZAR - 10 rands sul-africanos KRW - 1.000 ROK won

Espero que a função encontre seu lugar no seu projeto. Se você tiver alguma dúvida ou algo parecer incompreensível, escreva sobre isso nos comentários deste artigo.

Postagens semelhantes