Генератор случайных чисел   •   Online-инструменты
9 815 просм
16 комм
Поделиться:

Получаем курсы валют с сайта ЦентроБанка на PHP

В некоторых случаях необходимо узнать актуальную информацию о текущем курсе валют. Кто, как не ЦентроБанк, лучше всего справится с этой задачей?

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

Поскольку сайт ЦентроБанка предоставляет информацию о курсе валют на текущий день и прошедшие в формате XML, то ею мы и воспользуемся для написания модуля.

<?php
	header("Content-Type: text/html; charset=utf-8");
	$date = date("d/m/Y"); // Текущая дата
	$content = simplexml_load_file("https://www.cbr.ru/scripts/XML_daily.asp?date_req=".$date);
	
	foreach($content->Valute as $cur) { 
		if($cur->NumCode == 036) { $aud = str_replace(",", ".", $cur->Value); } // Австралийский доллар
		if($cur->NumCode == 826) { $gbr = str_replace(",", ".", $cur->Value); } // Фунт стерлингов Соединенного королевства
		if($cur->NumCode == 974) { $byr = str_replace(",", ".", $cur->Value); } // Белорусских рублей
		if($cur->NumCode == 208) { $dkk = str_replace(",", ".", $cur->Value); } // Датских крон
		if($cur->NumCode == 840) { $usd = str_replace(",", ".", $cur->Value); } // Доллар США
		if($cur->NumCode == 978) { $eur = str_replace(",", ".", $cur->Value); } // Евро
		if($cur->NumCode == 352) { $isk = str_replace(",", ".", $cur->Value); } // Исландских крон
		if($cur->NumCode == 398) { $kzt = str_replace(",", ".", $cur->Value); } // Казахстанских тенге
		if($cur->NumCode == 124) { $cad = str_replace(",", ".", $cur->Value); } // Канадский доллар
		if($cur->NumCode == 578) { $nok = str_replace(",", ".", $cur->Value); } // Норвежских крон
		if($cur->NumCode == 960) { $xdr = str_replace(",", ".", $cur->Value); } // СДР (специальные права заимствования)
		if($cur->NumCode == 702) { $sgd = str_replace(",", ".", $cur->Value); } // Сингапурский доллар
		if($cur->NumCode == 949) { $try = str_replace(",", ".", $cur->Value); } // Турецкая лира
		if($cur->NumCode == 980) { $uah = str_replace(",", ".", $cur->Value); } // Украинских гривен
		if($cur->NumCode == 752) { $sek = str_replace(",", ".", $cur->Value); } // Шведских крон
		if($cur->NumCode == 756) { $chf = str_replace(",", ".", $cur->Value); } // Швейцарский франк
		if($cur->NumCode == 392) { $jpy = str_replace(",", ".", $cur->Value); } // Японских иен
	} 
?>

Как вы поняли, этот скрипт позволяет вам получать курсы следующих валют: австралийского доллара, фунта стерлингов Соединенного королевства, белорусского рубля, датской кроны, доллара США, eвро, исландской кроны, казахстанского тенге, канадского доллара, норвежской кроны, СДР, сингапурского доллара, турецкой лиры, украинской гривны, шведской кроны, швейцарского франка, японской йены.

Использование следующее:

echo "Доллар - ".$usd;

Где $usd – необходимая валюта (в нашем случае - доллар США).

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

date("d/m/Y")

замените на нужную вам дату в формате «dd/mm/YYYY».

16
комментарий
Навигация:
1 2
Дмитрий
3.11 в 22:43
А если нужен только доллар? Перебор foreach не нужен?
  • 0
Дмитрий, да, foreach не нужен. Пример на долларе будет такой:

echo $content->xpath('Valute[@ID="R01235"]')[0]->Value;
  • 5
Родион
4.02 в 14:21
классная вещь, а можно сделать так же, только с казахстанского национального банка http://www.nationalbank.kz/rss/rates.xml ?
  • 0
Родион, можно. В ближайшее время сделаем.

-----

Готово - https://www.pandoge.com/moduli_i_skripty/poluchaem-kursy-valyut-s-sayta-nacionalnogo-banka-kazahstana-na-php
  • 5
Нодирбек
13.02 в 01:30
Здравствуйте!

можно сделат http://cbu.uz/uzc/arkhiv-kursov-valyut/xml/
  • 0
Александр
16.02 в 10:57
А курсы получаем только по отношению к рублю?
есть ли возможность например EURJPY?
  • 0
Павел
26.02 в 15:47
Здравствуйте, как вывести дату и разницу, наподобие вашего информера?
  • 0
Павел, делаете два запроса - 1 запрос на сегодняшнюю дату, а 2 - на вчерашнюю.

Получаете данные за оба дня и вычитаете одно из другого.
  • 8
Павел
6.03 в 19:26
Работает конечно, но через раз! После ctrl+f5 то показывает то пропадает как решить?
  • 0
Павел, Я даже не представляю как вы там реализовали вывод, но предположу, что кэширование данных исправить эту ситуацию.

Грузите файл к себе на сервер и проверяйте: если файлу больше двух часов - значит нужно его обновить, если нет - то используете тот что на вашем сервере.

А вообще, обновлять файл можно и раз в день. ЦБ не так часто обновляет данные.
  • 9
Валерий
13.04 в 21:37
Спасибо! Как подключить обработчик на DLE?
  • 0
Investoram
12.05 в 04:20
Во-первых, в настройках системы можно указать критический порог изменения курса валюты в процентах или рублях. Если он превышен, незамедлительно отправляется sms и e-mail сообщения.
  • 0
Николай
22.06 в 11:32
а данный скрипт буден работать на сайте ( Opencart 2.3, https) ?
  • 0
Николай, Да.
  • 0
Андрей
23.08 в 15:13
Добрый день
Как сделать вывод только двух знаков после запятой? Сейчас 4
  • 0
Оставить комментарий:
Нажимая кнопку «Отправить» вы даете согласие на обработку своих персональных данных.
Ваше Имя
Ваш E-mail
Текст комментария