Получить курс валют через PHP от Центробанка

Получить курс валют через PHP от Центробанка

550

Следить за курсом валют сегодня обычное дело. Поэтому если на вашем сайте будет легкий, самописный информер валют на php, то это несомненно прибавит ему плюсиков.

Чтобы отображать актуальные данные любого курса, нужно их где-то брать. Предлагаю использовать самый точный источник - Центробанка РФ. Очень многие сайты используют именно его данные, поэтому не будем изобретать велосипед.

Их сайт любезно предоставляет любому веб мастеру xml файл, в котором записаны актуальные курсы самых популярных валют: http://www.cbr.ru/scripts/XML_daily.asp

Если мы рассмотрим файл подробнее, то увидим, что:

  • - Valute ID - позволит выбрать интересующую нас валюту;
  • - CharCode - ее код
  • - Nominal - номинал валюты
  • - Name - имя
  • - Value - значение

Чтобы получить значение любого курса, будем использовать XML парсинг. Для этого сделаем такой код:

$languages = simplexml_load_file("http://www.cbr.ru/scripts/XML_daily.asp");
//валюты
foreach ($languages->Valute as $lang) {
if ($lang["ID"] == 'R01235') { //тип валюты
$koeficient1 = round(str_replace(',','.',$lang->Value), 2); //ее значение
$koeficient1a = $lang->Nominal.' '.$lang->Name.' = '.$koeficient1.' руб.'; //запоминаем номинал
} }
echo $koeficient1a;

Думаю, в комментариях все ясно. Мы выбрали валюту по ее коду, а дальше стали работать с нужными нам свойствами. В результате мы получим строку типа: 1 Доллар США = 59.64 руб.

На этом можно закончить статью, но наш скрипт будет работать не более дня. Дело в том, что сайт, с которого мы берем xml требует кэшировать данные, чтобы уменьшить количество обращений к нему.

Для этого модернизируем скрипт и будем использовать $_COOKIE. Куки в данном случае запомнят пользователя до закрытия им браузера, поэтому если он будет 100 раз обновлять страницу, то количество обращений к источнику уменьшится до 1 раза. Все будет браться с куков.

$languages = simplexml_load_file("http://www.cbr.ru/scripts/XML_daily.asp");
if(isset($_COOKIE["cursvalut"])) { echo $_COOKIE["cursvalut"]; }
else {
//валюты
foreach ($languages->Valute as $lang) {
if ($lang["ID"] == 'R01235') { //тип валюты
$koeficient1 = round(str_replace(',','.',$lang->Value), 2); //ее значение
$koeficient1a = $lang->Nominal.' '.$lang->Name.' = '.$koeficient1.' руб.'; //запоминаем номинал
SetCookie("cursvalut",$koeficient1a,time()+3600*12);} //в куках
}
echo $koeficient1a;
}

Первая строчка означает, что если валюта уже запомненна, то выводим ее, а если нет, то создаем на лету и запомним в куках.

Надеюсь никому не надо напоминать, что перед установкой куков не должны выводиться html элементы. Иначе вы увидите Cannot modify header information... Поэтому установку значений куков вставьте в самое начало документа.

| | Получить курс валют через PHP от Центробанка | Следить за курсом валют сегодня обычное дело. Поэтому если на вашем сайте будет легкий, самописный информер валют на php, то это несомненно прибавит е | http://blogprogram.ru/wp-content/uploads/2017/01/550-131x131.jpg