Banke Rusije

Kako dobiti zvanične kurseve za određeni datum u PHP-u. Kako dobiti zvanične kurseve za dati datum u PHP Script-u da dobijete kurs

U nekim slučajevima, kada radite sa trgovinom, postaje neophodno dobiti ažurne informacije o kursu određene valute. Centralna banka je najbolji izvor takvih podataka, a s obzirom na to da daje otvorene i pravovremene informacije o kursu u XML formatu, grijeh je ne koristiti je.

Ova funkcija izgleda ovako:

Funkcija get_currency($currency_code, $format) ( $date = date("d/m/Y"); // Trenutni datum $cache_time_out = "3600"; // Životni vijek keširanja u sekundama $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("Value")->Value), $format); )

Sadrži redove:

$date = datum("d/m/Y"); // Trenutni datum $cache_time_out = "3600"; // Životni vijek keširanja u sekundama

su odgovorni za datum (u našem slučaju to je trenutni) i životni vijek keša, respektivno. S obzirom da Centralna banka ne ažurira tako često podatke o valuti, ne treba mu samo tako smetati svaki put kada ih koristite. Možete promijeniti vrijednosti u ovim redovima (opciono) na svoje.

Upotreba funkcije je sljedeća:

echo get_currency("USD", 3);

ovdje " Američki dolar” je simbolična šifra valute (u našem slučaju to je američki dolar), i “ 3 " - broj simbola iza zareza.

Važeća lista valuta koju je dostavila Centralna banka Ruske Federacije (u vrijeme pisanja ovog teksta) u obliku "šifra simbola valute - denominacija i naziv":

AUD - 1 australijski dolar AZN - 1 azerbejdžanski manat GBP - 1 britanska funta sterlinga AMD - 100 jermenskih drama BYN - 1 bjeloruska rublja BGN - 1 bugarski lev BRL - 1 brazilski real HUF - 100 HUF HKD - 10 hongkonških dolara DKK - 10 hongkonških dolara DKK kruna USD - 1 američki dolar EUR - 1 euro INR - 100 indijskih rupija KZT - 100 kazahstanskih tenge CAD - 1 kanadski dolar KGS - 100 kirgiskih soma CNY - 10 kineskih juana MDL - 10 MDL NOK - 10 norveških kruna 10 norveških kruna PLN zł – 1 rumunski leu XDR – 1 SDR (Specijalna prava vučenja) SGD – 1 singapurski dolar TJS – 10 tadžikistanskih somonija TRY – 1 turska lira TMT – 1 novi turkmenski manat UZS – 10.000 UZS UAH – 10 ukrajinskih grivna CZK – 10 CZK – 10 CZK SEK CHF - 1 švicarski franak ZAR - 10 južnoafričkih randa KRW - 1.000 von ROK

Nadam se da će funkcija naći svoje mjesto u vašem projektu. Ako imate bilo kakvih pitanja ili vam se nešto činilo nerazumljivim - svakako napišite o tome u komentarima ispod ovog članka.

U nekim slučajevima, kada radite sa trgovinom, postaje neophodno dobiti ažurne informacije o kursu određene valute. Centralna banka je najbolji izvor takvih podataka, a s obzirom na to da daje otvorene i pravovremene informacije o kursu u XML formatu, grijeh je ne koristiti je.

Ova funkcija izgleda ovako:

Funkcija get_currency($currency_code, $format) ( $date = date("d/m/Y"); // Trenutni datum $cache_time_out = "3600"; // Životni vijek keširanja u sekundama $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("Value")->Value), $format); )

Sadrži redove:

$date = datum("d/m/Y"); // Trenutni datum $cache_time_out = "3600"; // Životni vijek keširanja u sekundama

su odgovorni za datum (u našem slučaju to je trenutni) i životni vijek keša, respektivno. S obzirom da Centralna banka ne ažurira tako često podatke o valuti, ne treba mu samo tako smetati svaki put kada ih koristite. Možete promijeniti vrijednosti u ovim redovima (opciono) na svoje.

Upotreba funkcije je sljedeća:

echo get_currency("USD", 3);

ovdje " Američki dolar” je simbolična šifra valute (u našem slučaju to je američki dolar), i “ 3 " - broj simbola iza zareza.

Važeća lista valuta koju je dostavila Centralna banka Ruske Federacije (u vrijeme pisanja ovog teksta) u obliku "šifra simbola valute - denominacija i naziv":

AUD - 1 australijski dolar AZN - 1 azerbejdžanski manat GBP - 1 britanska funta sterlinga AMD - 100 jermenskih drama BYN - 1 bjeloruska rublja BGN - 1 bugarski lev BRL - 1 brazilski real HUF - 100 HUF HKD - 10 hongkonških dolara DKK - 10 hongkonških dolara DKK kruna USD - 1 američki dolar EUR - 1 euro INR - 100 indijskih rupija KZT - 100 kazahstanskih tenge CAD - 1 kanadski dolar KGS - 100 kirgiskih soma CNY - 10 kineskih juana MDL - 10 MDL NOK - 10 norveških kruna 10 norveških kruna PLN zł – 1 rumunski leu XDR – 1 SDR (Specijalna prava vučenja) SGD – 1 singapurski dolar TJS – 10 tadžikistanskih somonija TRY – 1 turska lira TMT – 1 novi turkmenski manat UZS – 10.000 UZS UAH – 10 ukrajinskih grivna CZK – 10 CZK – 10 CZK SEK CHF - 1 švicarski franak ZAR - 10 južnoafričkih randa KRW - 1.000 von ROK

Nadam se da će funkcija naći svoje mjesto u vašem projektu. Ako imate bilo kakvih pitanja ili vam se nešto činilo nerazumljivim - svakako napišite o tome u komentarima ispod ovog članka.

Mnogi od vas su više puta vidjeli da se neke stranice prikazuju devizni kurs. Naravno, sami administratori ovih stranica ih ne mijenjaju svakodnevno (nadam se). Preuzimaju ih sa web stranice Centralne banke. I u ovom članku ću dati kod PHP skripta za preuzimanje kurseva sa sajta Centralne banke i prikazati ih na stranici.

Evo koda za skriptu:

$date = datum("d/m/Y"); // Današnji datum u traženom formatu
$link = "http://www.cbr.ru/scripts/XML_daily.asp?date_req=$date"; // Link do XML fajla sa kursevima
$content = file_get_contents($link); // Preuzmi sadržaj stranice
$dom = novi domDocument("1.0", "cp1251"); // Kreiraj DOM
$dom->loadXML($content); // Učitavanje XML dokumenta u DOM
$root = $dom->documentElement; // Dobivamo korijenski element
$childs = $root->childNodes; // Dobivamo listu podređenih elemenata
$data = niz(); // Skup podataka
za ($i = 0; $i< $childs->dužina; $i++) (
$childs_new = $childs->item($i)->childNodes; // Dobiti podređene čvorove
za ($j = 0; $j< $childs_new->dužina; $j++) (
/* Tražimo valute koje nas zanimaju */
$el = $childs_new->item($j);
$code = $el->nodeValue;
if (($code == "USD") || ($code == "EUR")) $data = $childs_new; // Dodajte potrebne valute u niz
}
}
/* Prolazi kroz niz sa podacima o valuti */
za ($i = 0; $i< count($data); $i++) {
$list = $podaci[$i];
za ($j = 0; $j< $list->dužina; $j++) (
$el = $list->item($j);
/* Prikaži kurseve */
if ($el->nodeName == "Ime") echo $el->nodeValue." - ";
elseif ($el->nodeName == "Vrijednost") echo $el->nodeValue."
";
}
}
?>

Pokušao sam pažljivo komentirati kod, tako da ne bi trebalo biti problema s razumijevanjem. Također, da biste razumjeli zašto ih ima toliko i zašto takvi ciklusi, kao i odakle dolaze određeni uvjeti, toplo preporučujem da pratite link iz koda (samo zamijenite datum). Onda ćeš vidjeti XML dokument, i bit će vam mnogo lakše razumjeti zašto je takav kod napisan.

Dobar dan dragi prijatelji. Kao što znate, nedavno (11. februara) u Kazahstanu je došlo do još jedne devalvacije, ovog „crnog utorka“, kako su ga mnogi na internetu nazvali, pogodio je mnoge po džepu. Neću pisati još jedan negativan članak na ovu temu. Mislim da nije potrebno. Šta je urađeno, urađeno je. Ali tog nesrećnog dana, bio sam veoma ogorčen činjenicom da nigde na internetu nije bilo moguće saznati tačan kurs dolara, evra ili drugog devize. Sve poznate i nepoznate (hello google) stranice mi nisu bile dostupne. Možda su neke stranice pale u nemilost kazahstanskim korisnicima i nisu bile spremne za ovoliki broj korisnika. Ali činjenica ostaje da stranice nisu radile.

A uveče, kada su moje strasti oko devalvacije počele da jenjavaju i moji nervi počeli da se smiruju, odlučio sam da moram sebi da napišem mali informator kursa na svom udobnom malom blogu. Kao što sam rekao gore, nisam htio koristiti widgete drugih sajtova, pošto su ovi sajtovi "lagali" kada je ceo kaznet hteo da sazna ovaj prokleti kurs. :) Ispod je php informer skripta, mislim da skripti nisu potrebni komentari:

$amount = "1";
$from = "USD";
$from = "EUR";
$from = "RUB";
$to="KZT";
$i=0;
dok ($i<= 2){
$i++;
$get = explode(" ",$get);
$get = explode("
",$get);


";
}
?>

Skripta je univerzalna, možete promijeniti varijablu $to u drugu valutu u koju želite da konvertujete, kao i da povećate ili promenite nizove $od[?], dodajte druge valute, samo ne zaboravite promijeniti uvjet petlje ako ste povećali broj povučenih valuta. Identifikator (naziv) valute možete dobiti sa linka - https://www.google.com/finance/converter. Kao što ste vjerovatno shvatili, skripta analizira ovu google stranicu u petlji i uzima informacije koje su joj potrebne.

Kako instalirati ovu skriptu na svoju stranicu? Ako imate wordpress motor, morat ćete instalirati dodatak " PHP Code Widget"i odaberite ovaj widget i tu dodajte sav kod. Ovo je najlakši način. Ako postoji problem, uvijek možete onemogućiti dodatak i sve će se vratiti kako je bilo. Ne nudim složene opcije za instaliranje skripte. Možete mi poslati e-poštu i pokušaću da vam pomognem. Nadam se da vam je ovaj članak bio od pomoći. :)

P.S: Za sebe sam malo optimizovao skriptu (dodato keširanje) i dao cron zadatak da ažurira skriptu jednom na sat.Moja verzija čuva *.html fajl i prikazujem ga u widgetima, preko ajaxa.

// Pokreni baferovanje izlaza
ob_start();

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

// sačuvati snimljeni izlaz u .html datoteku
file_put_contents("currency.html", ob_get_contents());
// kraj baferiranja i prikaz stranice
ob_end_flush();
?>

Sačuvajte skriptu u *.php formatu, po mogućnosti u posebnom folderu (npr. u folderu "scripts" da ne bi začepili sajt. Nakon toga, moraćete da dodate zadatak u cron, pristupite skripti svakih n sati. I jednom kroz pretraživač, ručno pristupite skripti tako da kreira html fajl, na koji ćemo se ubuduće pozivati. Dalje, možete prikazati skriptu u widgetima kroz iframe:

‹script›
funkcija show_temp()
{
$.ajax((
url: "http://yoursite/scripts/currency.html",
cache: false
uspjeh: funkcija(html)(
$("#currency").html(html);
}
});
}
$(document).ready(function()(
show_temp();
});

Ova vrsta izlaza će vam omogućiti da promijenite veličinu fonta, boju fonta ili dodate bilo koje druge efekte putem CSS-a (Cascading Style Sheet).

Optimizirana verzija skripte neće učitavati server i stalno pristupati googleu. Možete drugačije implementirati keširanje i provjeriti po datumu da ne koristite cron. Ali lično sam krenuo od jednostavne. Ne volim biti pametan . :)

Mašina za pranje veša pokvarena? 1v.kz će pomoći! - Popravka mašina za pranje veša u Almatiju:

Profesionalci iz svih delova grada

Na internetu postoji mnogo skripti koje prikazuju kurseve. Ali trebali su mi dolar i euro iz centralne banke. Odlučio sam potražiti skripte koje će se pokazati zvaničnih kurseva na određeni datum. Naišao sam na zanimljiv jQuery članak o sortiranju tabele. Tamo u scenariju PHP analizator kursa" xml dokument je opljačkan pomoću regularnih izraza. Regularni izrazi se jako koriste u pljački koda. Skripta radi odlično, ali ima svoje karakteristike. Izvodi tabelu u HTML-u sa velikim brojem valuta. Trebam formira JSON niz iz tabele sa kursevima. Ovaj niz je poput kobasice. Programeri tako zovu takav niz. Ima veoma velikih kobasica u velikim količinama)))

/* * getArr() * kursevi iz centralne banke * xml dokument se analizira * */ funkcija getArr() ( $url = "http://www.cbr.ru/scripts/XML_daily.asp?date_req=". date("d/m/Y",strtotime("+0 dan")); $cbr_xml = str_replace(array("\n","\r","\t"),"",getContentPage($url )); if(preg_match_all("~ (.*?) ~i",$cbr_xml,$Valute)) (foreach($Valute kao $data) ( preg_match("~ (.*?) ~i",$data)) ,$CharCode); preg_match("~ (.*?) ~i",$data,$NumCode); $arr[$CharCode]["num_code"].= $NumCode; preg_match("~ (.*?) ~i",$data,$Nominal); $arr[$CharCode]["nominal"] = $Nominal ; preg_match("~ (.*?) ~i",$data,$Name); $arr[$ CharCode]["name"].= toUtf8($Name); preg_match("~ (.*?) ~i",$data,$Value); $arr[$CharCode]["value"].= $Value ; $i++; ) return $arr; ) ) funkcija 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); vrati $text; ) //kodiranje u Utf8 funkciju toUtf8($ str) ( return mb_convert_encoding($str, "utf-8", "windows-1251"); ) $arr = getArr(); echo json_encode($arr); /* ( "EUR":("num_code":"978", "nominalni":"1", "name":"\u0415\u0432\u0440\u043e", "vrijednost":"63,6090"), "USD":("num_code":"840", "nominal":"1", "name":"\u0414\u043e\u043b\u043b\u0430\u0440 \u0421\u0428\u0410", "vrijednost": "58.0374") )*/

Možeš pogledajte i današnji i jučerašnji kurs. Funkcija strtotime("+0 dan") vam omogućava da promijenite vrijeme. Naravno, koliko se nula ionako ne dodaje, vrijednost varijable se neće promijeniti. Ostavio sam ovaj dio koda tako da možete promijeniti vrijeme u bilo kojem trenutku. Morao sam malo preurediti niz. Koristio sam varijablu $CharCode kao ključ za niz. Postoji mnogo drugih nizova u mom velikom nizu, a određenom nizu možete pristupiti samo pomoću ključa (EUR). U mom slučaju, varijabla $CharCode uzima sljedeće vrijednosti:

  1. AUD => Australijski dolar
  2. AZN => azerbejdžanski manat
  3. GBP => Britanska funta sterlinga
  4. AMD => Jermenske drame
  5. BYR => bjeloruska rublja
  6. BGN => bugarski lev
  7. BRL => Brazilski Real
  8. HUF => mađarska forinta
  9. DKK => danska kruna
  10. USD => američki dolar
  11. EUR => Euro
  12. INR => Indijske rupije
  13. KZT => kazahstanski tenge
  14. CAD => Kanadski dolar
  15. KGS => kirgistanski som
  16. CNY => Kineski juan
  17. MDL => moldavski lei
  18. NOK => norveška kruna
  19. PLN => poljski zlot
  20. RON => Rumunski novi leu
  21. XDR => SDR (Specijalna prava vučenja)
  22. SGD => Singapurski dolar
  23. TJS => tadžikistanski somoni
  24. TRY => Turska lira
  25. TMT => Turkmenski novi manat
  26. UZS => uzbekistanski iznos
  27. UAH => ukrajinska grivna
  28. CZK => Češka kruna
  29. SEK => švedska kruna
  30. CHF => švicarski franak
  31. ZAR => Južnoafrički rand
  32. KRW => korejski von
  33. JPY => japanski jen

Zanimaju me samo USD i EUR. Nisam uklonio iz