Jump to content
Sign in to follow this  
ANDROS

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

Recommended Posts

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

Я рад поделиться с вами своей небольшой функцией, которая отлично справляется с описанной в заголовке задачей, а именно – бесплатным получением курса валют ЦБ РФ на PHP.

Функция эта выглядит следующим образом:

function get_currency($currency_code, $format) {

	$date = date("d/m/Y"); // Текущая дата
	$cache_time_out = "3600"; // Время жизни кеша в секундах

	$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);

		$fp = fopen($file_currency_cache, "w");

		fwrite($fp, $out);
		fclose($fp);

	}

	$content_currency = simplexml_load_file($file_currency_cache);

	return number_format(str_replace(",", ".", $content_currency->xpath('Valute[CharCode="'.$currency_code.'"]')[0]->Value), $format);

}

В ней строки:

$date = date("d/m/Y"); // Текущая дата
$cache_time_out = "3600"; // Время жизни кеша в секундах

отвечают за дату (в нашем случае она текущая) и время жизни кэша соответственно. Поскольку ЦБ не так часто обновляет данные о валютах, не стоит докучать ему просто так при каждом их использовании. Значения в этих строках (по желанию) можете изменить на свои.

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

echo get_currency("USD", 3);

Здесь «USD» – символьный код валюты (в нашем случае – это доллар США), а «3» – количество знаков после запятой.

Допустимый перечень валют, предоставляемых ЦБ РФ (на момент написания статьи) в виде «символьный код валюты – номинал и название»:

AUD  1 австралийский доллар
AZN  1 азербайджанский манат
GBP  1 фунт стерлингов Соединенного королевства
AMD  100 армянских драмов
BYN  1 белорусский рубль
BGN  1 болгарский лев
BRL  1 бразильский реал
HUF  100 венгерских форинтов
HKD  10 гонконгских долларов
DKK  10 датских крон
USD  1 доллар США
EUR  1 евро
INR  100 индийских рупий
KZT  100 казахстанских тенге
CAD  1 канадский доллар
KGS  100 киргизских сомов
CNY  10 китайских юаней
MDL  10 молдавских леев
NOK  10 норвежских крон
PLN  1 польский злотый
RON  1 румынский лей
XDR  1 СДР (специальные права заимствования)
SGD  1 сингапурский доллар
TJS  10 таджикских сомони
TRY  1 турецкая лира
TMT  1 новый туркменский манат
UZS  10 000 узбекских сумов
UAH  10 украинских гривен
CZK  10 чешских крон
SEK - 10 шведских крон
CHF  1 швейцарский франк
ZAR  10 южноафриканских рэндов
KRW  1 000 вон Республики Корея

Надеюсь, функция найдет свое место в вашем проекте. Если остались вопросы или что-то показалось непонятным – обязательно пишите об этом в комментариях под данной статьей.


Правила форума       Правила оформления контента       Приватный форум и чат

podpis.png

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Language
  • стиль

2020 © cmsmafia.ru

×
×
  • Create New...

Important Information

Privacy Policy