Курс валют очень часто используют в интернет магазинах. И для мониторинга изменения курса можно использовать сайты банков. Крупные банки предоставляют открытое API для получения текущего курса валют.
Возьмем для примера НБУ — у них есть Api тут
Как видно у них можно получить данные в двух форматах XML и JSON
Для удобства будем использовать JSON
Для запроса к серверу можно использовать file_get_content() или сUrl.
Недавно по работе с курлом была статья с примерами Curl в примерах на 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: "Паладiй",
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 раза в день.
коммент.