Курс валют
Курс валют часто використовують в інтернет магазинах. І для моніторингу Зміни курсу можна використовувати сайти банків. Великі банки надають відкритий API для отримання поточного курсу валют.
Візьмемо для прикладу НБУ — у них є Api тут
>Як видно у них можна отримати дані у двох форматах XML та JSON
Для зручності будемо використовувати JSON
Для запиту до сервера можна використовувати file_get_content() або URL.
Нещодавно по роботі з курлом була стаття з прикладами на PHP.
Будемо юзати СURL
Простий приклад, як повернути вміст
$ch = curl_init('https://bank.gov.ua/NBUStatService/v1/statdirectory/exchange?json');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HEADER, false);
$html = curl_exec($ch);
curl_close($ch);
print_r($html);
Response
[
{
r030: 36,
txt: "Австралійський долар",
rate: 18.191247,
cc: "AUD",
exchangedate: "14.05.2019",
},
{
r030: 124,
txt: "Канадський долар",
rate: 19.424695,
cc: "CAD",
exchangedate: "14.05.2019",
},
.
.
.
{
r030: 941,
txt: "Сербський динар",
rate: 0.250404,
cc: "RSD",
exchangedate: "14.05.2019",
},
{
r030: 964,
txt: "Паладій",
rate: 34260.539,
cc: "XPD",
exchangedate: "14.05.2019",
},
]
Для того, щоб отримати курс певної валюти можна написати невелику функцію.
$ch = curl_init('https://bank.gov.ua/NBUStatService/v1/statdirectory/exchange?json');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HEADER, false);
$html = curl_exec($ch);
curl_close($ch);
// print_r(json_decode($html,true));
function getCurs($array,$val){
foreach($array as $key => $value){
if($value['cc'] == $val){
return $value;
}
}
}
//Приклад використання
print_r(getCurs(json_decode($html,true),'MAD'));
//Array ( [r030] => 504 [txt] => Марокканський дирхам [rate] => 2.7394 [cc] => MAD [exchangedate] => 14.05.2019 ]
Примітка. Уважно читайте умови використання API. Часті запити до серверів банку не бажані, інакше вашу ip можуть заблокувати.
Правильно один раз зберегти собі дані в базу або файл та брати інфу потім звідти. І оновлювати ці дані 2-3 рази на день.