Contacte

Script pentru obținerea cursurilor de schimb. Cum să obțineți cursuri de schimb oficiale pentru o anumită dată în PHP

În unele cazuri, atunci când lucrați cu comerț, devine necesar să obțineți informații actualizate despre cursul de schimb al unei anumite monede. Banca Centrală este cea mai bună sursă de astfel de date și, având în vedere că oferă informații deschise și actualizate în timp util despre cursurile de schimb în format XML, ar fi un păcat să nu le folosim.

Această funcție arată astfel:

Funcția get_currency($currency_code, $format) ( $date = date("d/m/Y"); // Data curentă $cache_time_out = "3600"; // Durata de viață a memoriei cache în secunde $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("Valoare")->Valoare), $format); )

Conține liniile:

$data = data("d/l/Y"); // Data curentă $cache_time_out = "3600"; // Durata de viață a memoriei cache în secunde

sunt responsabili pentru data (în cazul nostru este actuală) și, respectiv, durata de viață a cache-ului. Deoarece Banca Centrală nu actualizează foarte des datele despre monede, nu ar trebui să le frământați de fiecare dată când le folosiți. Puteți modifica valorile din aceste rânduri (dacă doriți) cu valorile dvs.

Utilizarea funcției este după cum urmează:

Echo get_currency("USD", 3);

Aici " USD„ este codul simbolic al monedei (în cazul nostru, este dolarul american) și „ 3 » – numărul de zecimale.

Lista acceptabilă a valutelor furnizată de Banca Centrală a Federației Ruse (la momentul scrierii) sub forma „codului simbol al monedei - denumire și nume”:

AUD – 1 dolar australian AZN – 1 manat azerbaigian GBP – 1 liră britanică AMD – 100 dram armean BYN – 1 rublă belarusă BGN – 1 lev bulgară BRL – 1 real brazilian HUF – 100 forinți maghiari HKD – 10 dolari Hong Kong DKK – 10 danezi coroană USD – 1 dolar SUA EUR – 1 euro INR – 100 rupii indiene KZT – 100 tenge kazah CAD – 1 dolar canadian KGS – 100 som kirghize CNY – 10 yuani chinezesc MDL – 10 lei moldovenești NOK – 10 coroană norvegiană PLN – 1 zloty polonez RON – 1 leu românesc XDR – 1 SDR (drepturi speciale de tragere) SGD – 1 dolar singapore TJS – 10 somoni tadjici TRY – 1 liră turcească TMT – 1 manat turkmen nou UZS – 10.000 sum uzbece UAH – 10 grivne ucrainene CZK – 10 coroane cehe SEK - 10 coroane suedeze CHF - 1 franc elvețian ZAR - 10 randi sud-africani KRW - 1.000 won coreean

Sper că caracteristica își găsește locul în proiectul tău. Dacă aveți întrebări sau ceva pare neclar, asigurați-vă că scrieți despre asta în comentariile de sub acest articol.

Există multe scripturi pe Internet care arată ratele de schimb. Dar aveam nevoie de cursul de schimb al dolarului și al euro de la banca centrala. Am decis să caut scenarii care să se arate cursuri oficiale monede pentru o dată dată. Am dat peste un articol interesant despre sortarea tabelelor jQuery. Acolo în scenariu" Analizor de curs valutar PHP„Documentul xml este jefuit folosind expresii regulate. Expresiile regulate sunt folosite în mod activ în spargerea codului. Scriptul funcționează excelent, dar are propriile sale particularități. Afișează un tabel în HTML cu un număr mare valute am nevoie generați o matrice JSON dintr-un tabel cu rate de schimb. Această matrice este ca un cârnați. Acesta este ceea ce programatorii numesc o astfel de matrice. Există cârnați foarte mari în cantități mari)))

/* * getArr() * cursurile de schimb de la banca centrală * analizarea documentului xml * */ function getArr() ( $url = "http://www.cbr.ru/scripts/XML_daily.asp?date_req=". data("d/m/Y",strtotime("+0 day")); $cbr_xml = str_replace(array("\n","\r","\t"),"",getContentPage($url )); if(preg_match_all("~ (.*?) ~i",$cbr_xml,$Valute)) ( foreach($Valute ca $date) (preg_match("~ (.*?) ~i",$date ,$CharCode); preg_match("~ (.*?) ~i",$data,$NumCode); $arr[$CharCode]["num_code"].= $NumCode; ); $arr[$CharCode]["nominal"] = $Nominal; toUtf8($Name); preg_match("~ (.*?) ~i",$data,$Value ) return $arr($url) ($c = curl_init; url); curl_setopt($c, CURLOPT_RETURNTRANSFER, 1 curl_setopt, $text = curl_exec($c) return toUtf8; $str) ( return mb_convert_encoding($str, "utf-8", "windows-1251"); ) $arr = getArr(); echo json_encode($arr); /* ( "EUR":("num_code":"978", "nominal":"1", "nume":"\u0415\u0432\u0440\u043e", "valoare":"63,6090"), "USD ":("num_code":"840", "nominal":"1", "nume":"\u0414\u043e\u043b\u043b\u0430\u0440 \u0421\u0428\u0410", "valoare": "58.0374 ") )*/

Puteți vedeți atât cursul de schimb de astăzi, cât și cursul de schimb de ieri. Funcția strtotime ("+0 zi") vă permite să schimbați ora. Desigur, indiferent de câte zerouri adăugați, valoarea variabilei nu se va modifica. Am lăsat această parte a codului pentru ca ora să poată fi schimbată în orice moment. A trebuit să refac un pic matricea. Am folosit variabila $CharCode ca cheie pentru matrice. În matricea mea mare există multe alte matrice și puteți accesa o anumită matrice doar prin cheie (EUR). În cazul meu, variabila $CharCode ia următoarele valori:

  1. AUD => dolar australian
  2. AZN => Manat azer
  3. GBP => Lira sterlină
  4. AMD => Drame armene
  5. BYR => ruble belaruse
  6. BGN => Lev bulgar
  7. BRL => Real brazilian
  8. HUF => forint maghiar
  9. DKK => coroană daneză
  10. USD => Dolar american
  11. EUR => Euro
  12. INR => Rupie indiene
  13. KZT => Kazahstan tenge
  14. CAD => dolar canadian
  15. KGS => Kârgâzstan som
  16. CNY => Yuan chinezesc
  17. MDL => lei moldovenesc
  18. NOK => coroană norvegiană
  19. PLN => zloty polonez
  20. RON => Leu nou romanesc
  21. XDR => SDR (drepturi speciale de tragere)
  22. SGD => dolar din Singapore
  23. TJS => Tadjikistani somoni
  24. TRY => lira turceasca
  25. TMT => Manat nou turkmen
  26. UZS => uzbec som
  27. UAH => Grivna ucraineană
  28. CZK => coroane cehe
  29. SEK => coroană suedeză
  30. CHF => franc elvețian
  31. ZAR => rand sud-african
  32. KRW => Republica Coreea a câștigat
  33. JPY => Yen japonez

Ma intereseaza doar USD si EUR. Nu l-am șters din

Mulți dintre voi ați văzut în mod repetat că unele site-uri afișează cursuri de schimb. Desigur, înșiși administratorii acestor site-uri nu le schimbă zilnic (sper). Le descarcă de pe site-ul Băncii Centrale. Și în acest articol voi da codul Script PHP pentru descărcarea cursurilor de schimb de pe site-ul Băncii Centraleși afișarea lor pe pagină.

Iată imediat codul de script:

$data = data("d/l/Y"); // Data de astăzi în formatul necesar
$link = "http://www.cbr.ru/scripts/XML_daily.asp?date_req=$date"; // Link către fișierul XML cu rate de schimb
$content = file_get_contents($link); // Descărcați conținutul paginii
$dom = domDocument nou ("1.0", "cp1251"); // Creați DOM
$dom->loadXML($conținut); // Încărcați un document XML în DOM
$root = $dom->documentElement; // Luați elementul rădăcină
$copii = $root->childNodes; // Obține o listă de elemente copil
$date = array(); // Set de date
pentru ($i = 0; $i< $childs->lungime; $i++) (
$copii_nou = $copii->item($i)->childNodes; // Luați noduri copil
pentru ($j = 0; $j< $childs_new->lungime; $j++) (
/* Căutăm valute care ne interesează */
$el = $copii_nou->item($j);
$cod = $el->nodeValue;
if (($cod == "USD") || ($cod == "EUR")) $date = $copii_nou; // Adăugați monedele necesare în matrice
}
}
/* Iterează printr-o matrice cu date despre monede */
pentru ($i = 0; $i< count($data); $i++) {
$listă = $date[$i];
pentru ($j = 0; $j< $list->lungime; $j++) (
$el = $list->item($j);
/* Afișează cursurile de schimb */
if ($el->nodeName == "Nume") echo $el->nodeValue." - ";
elseif ($el->nodeName == "Valoare") echo $el->nodeValue." ruble
";
}
}
?>

Am încercat să comentez codul în detaliu, așa că nu ar trebui să fie probleme de înțelegere. De asemenea, pentru a înțelege de ce sunt atât de multe și de ce exact astfel de cicluri, precum și de unde provin anumite condiții, vă recomand cu tărie să vizitați linkul din cod (doar să introduceți data). Atunci vei vedea document XML, și vă va fi mult mai ușor să înțelegeți de ce a fost scris acest cod special.

Bună seara dragi prieteni. După cum știți, recent (11 februarie) am avut o altă devalorizare în Kazahstan, această „Marțea Neagră”, așa cum o numeau mulți de pe internet, a lovit buzunarele multora. Nu voi scrie un alt articol negativ pe acest subiect. Nu cred că acest lucru este necesar. Ce s-a făcut s-a făcut. Dar în acea zi nefastă am fost foarte revoltat de faptul că nicăieri pe internet nu a fost posibil să aflu cursul exact al dolarului, euro sau altul. valuta straina. Toate site-urile cunoscute și necunoscute (bună ziua Google) nu mi-au fost accesibile. Poate că unele site-uri au căzut din favoarea utilizatorilor din Kazahstan și nu erau pregătite pentru o astfel de încărcătură de utilizatori. Dar rămâne faptul că site-urile nu au funcționat.

Și seara, când pasiunile mele legate de devalorizare au început să scadă și nervii au început să revină la starea lor de calm, am decis că trebuie să îmi scriu un mic informator al cursului de schimb pentru micul meu blog confortabil. După cum am spus mai sus, nu am vrut să folosesc widget-urile altor site-uri, deoarece aceste site-uri „mințeau” atunci când întreg guvernul a vrut să știe acest curs de schimb nenorocit. :) Mai jos este scriptul informator în PHP, cred că scriptul nu are nevoie de comentarii:

$cant = "1";
$de la = "USD";
$de la = "EUR";
$de la = "RUB";
$to= "KZT";
$i=0;
în timp ce($i<= 2){
$i++;
$get = explode(" ",$get);
$get = explode("
",$get);


";
}
?>

Scriptul este universal, puteți schimba variabila $toîntr-o altă monedă în care doriți să o convertiți, precum și să măriți sau să modificați matricele $de la[?], adăugați alte monede, nu uitați să schimbați condiția buclei dacă ați crescut numărul de monede care se scot. Puteți obține identificatorul (numele) monedelor folosind linkul - https://www.google.com/finance/converter. După cum probabil înțelegeți, scriptul analizează această pagină Google într-o buclă și preia informațiile de care are nevoie.

Cum să instalezi acest script pe site-ul tău? Dacă aveți un motor wordpress, va trebui să instalați pluginul" Widget de cod PHP" și selectați acest widget și adăugați tot codul acolo. Acesta este cel mai simplu mod. Dacă apare o problemă, puteți oricând să dezactivați pluginul și totul va reveni așa cum a fost. Nu ofer opțiuni complexe pentru instalarea scriptului. imi poti scrie pe e-mail, si voi incerca sa te ajut sper ca acest articol ti-a fost de folos :)

P.S: Pentru mine, am optimizat puțin scriptul (a adăugat caching) și am dat sarcina cron să actualizeze scriptul o dată pe oră Versiunea mea salvează un fișier *.html și îl afișez în widget-uri prin ajax.

// Porniți tamponarea ieșirii
ob_start();

$amount = "1";
$de la = "USD";
$de la = "EUR";
$de la = "RUB";
$to= "KZT";
$i=0;
în timp ce($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);
$suma_convertită = rotunjită($suma_convertită,2);
echo $amount." ".$from[$i]." = ".$converted_amount." ".$la."
";
}

// salvează rezultatul capturat în fișierul .html
file_put_contents("currency.html", ob_get_contents());
// termină tamponarea și afișarea paginii
ob_end_flush();
?>

Salvați scriptul în format *.php, este recomandabil să îl salvați într-un folder separat (de exemplu, în folderul „scripturi”, pentru a nu aglomera site-ul. După aceea, va trebui să adăugați o sarcină în crown, accesați scriptul o dată de n ore Și o dată prin browser accesați manual, astfel încât acesta să creeze un fișier html, pe care îl vom accesa ulterior, puteți afișa scriptul în widget-uri prin intermediul unui iframe.

‹script›
funcția show_temp()
{
$.ajax((
url: „http://site-ul tău/scripts/currency.html”,
cache: fals,
succes: function(html)(
$("#currency").html(html);
}
});
}
$(document).gata(funcție())(
show_temp();
});

Această metodă de ieșire vă va permite să modificați dimensiunea fontului, culoarea fontului sau să adăugați orice alte efecte prin CSS (Cascading Style Sheet).

O versiune optimizată a scriptului nu va încărca serverul și va contacta în mod constant Google. Puteți implementa în cache și verificați după dată, pentru a nu folosi cron fire de par. :)

Mașina ta de spălat este spartă? 1v.kz va ajuta! - Reparații mașini de spălat în Almaty:

Specialisti din toate colturile orasului

În unele cazuri, atunci când lucrați cu comerț, este necesar să obțineți informații actualizate despre cursul de schimb al unei anumite monede. Banca Centrală este cea mai bună sursă de astfel de date și, având în vedere că oferă informații deschise și actualizate în timp util despre cursurile de schimb în format XML, ar fi un păcat să nu le folosim.

Această funcție arată astfel:

Funcția get_currency($currency_code, $format) ( $date = date("d/m/Y"); // Data curentă $cache_time_out = "3600"; // Durata de viață a memoriei cache în secunde $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("Valoare")->Valoare), $format); )

Conține liniile:

$data = data("d/l/Y"); // Data curentă $cache_time_out = "3600"; // Durata de viață a memoriei cache în secunde

sunt responsabili pentru data (în cazul nostru este actuală) și, respectiv, durata de viață a cache-ului. Deoarece Banca Centrală nu actualizează foarte des datele despre monede, nu ar trebui să le frământați de fiecare dată când le folosiți. Puteți modifica valorile din aceste rânduri (dacă doriți) cu valorile dvs.

Utilizarea funcției este după cum urmează:

Echo get_currency("USD", 3);

Aici " USD„ este codul simbolic al monedei (în cazul nostru, este dolarul american) și „ 3 » – numărul de zecimale.

Lista acceptabilă a valutelor furnizată de Banca Centrală a Federației Ruse (la momentul scrierii) sub forma „codului simbol al monedei - denumire și nume”:

AUD – 1 dolar australian AZN – 1 manat azerbaigian GBP – 1 liră britanică AMD – 100 dram armean BYN – 1 rublă belarusă BGN – 1 lev bulgară BRL – 1 real brazilian HUF – 100 forinți maghiari HKD – 10 dolari Hong Kong DKK – 10 danezi coroană USD – 1 dolar SUA EUR – 1 euro INR – 100 rupii indiene KZT – 100 tenge kazah CAD – 1 dolar canadian KGS – 100 som kirghize CNY – 10 yuani chinezesc MDL – 10 lei moldovenești NOK – 10 coroană norvegiană PLN – 1 zloty polonez RON – 1 leu românesc XDR – 1 SDR (drepturi speciale de tragere) SGD – 1 dolar singapore TJS – 10 somoni tadjici TRY – 1 liră turcească TMT – 1 manat turkmen nou UZS – 10.000 sum uzbece UAH – 10 grivne ucrainene CZK – 10 coroane cehe SEK - 10 coroane suedeze CHF - 1 franc elvețian ZAR - 10 randi sud-africani KRW - 1.000 won coreean

Sper că caracteristica își găsește locul în proiectul tău. Dacă aveți întrebări sau ceva pare neclar, asigurați-vă că scrieți despre asta în comentariile de sub acest articol.

Ți-a plăcut articolul? Împărtășește-l