Administrator ANDROS Posted November 10, 2019 Administrator Share Posted November 10, 2019 В некоторых случаях при работе с коммерцией возникает необходимость получения актуальной информации о курсе той или иной валюты. Центробанк – лучший источник таких данных, а учитывая то, что он предоставляет открытую и своевременно обновляемую информацию о курсе валют в формате 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 вон Республики Корея Надеюсь, функция найдет свое место в вашем проекте. Если остались вопросы или что-то показалось непонятным – обязательно пишите об этом в комментариях под данной статьей. ✔ Наши пользователи помогли вам решить проблему? 💸 Наградите их реакцией и поддержите наш форум оформив подписку! 💎 Покупая премиум вы получаете дополнительные возможности и тем самым поддерживаете нас в продолжении! Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now