Парсеры текущих курсов валют центральных банков разных стран мира

Этот набор готовых функций на PHP позволит разработчикам веб-сайтов сконструировать информеры текущих курсов валют для любого банка (страны) из приведенных ниже. Либо регулярно сохранять курсы валют в БД, используя потом их для построения графиков, таблиц и аналитических материалов. Данный код в несколько изменённом виде применяется на проекте http://currency.servisator.ru/

Код распространяется по лицензии GPL.

Формат данных парсеров

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

  • country – двухбуквенное наименование страны по ISO;
  • bank – трех- четырехбуквенное наименование банка в виде аббревиатуры его английского названия;
  • fromvalue – номинал исходной валюты в кратных 10 единицах;
    В зависимости от нормировки курса может принимать значения из ряда ... 0.001, 0.01, 0.1, 1, 10, 100, 1000, 10 000...
  • fromcurrency – код исходной валюты по ISO;
  • tovalue – курс в единицах целевой валюты;
    Нормируется до величины со значением целой части от 20 до 200. Дробная часть округляется до двух разрядов.
  • tocurrency – код целевой валюты по ISO;
  • date - дата фиксации курса в формате YYYYMMDD

На изображении показано более наглядное представление о формате данных парсеров сделанное в Krumo для курсов валют Австралии на 17 октября 2011 г
Формат данных парсеров курсов валют

Страны, банки и код функций парсинга курсов валют

  1. Австралия (Резервный банк Австралии / Reserve Bank of Australia) - currency_rba_get_rates()
  2. Армения (Центральный банк Республики Армения / Հայաստանի Հանրապետության Կենտրոնական Բանկ) - currency_cba_get_rates()
  3. Беларусь (Национальный банк Республики Беларусь / Нацыянальны банк Рэспублiкi Беларусь) - currency_nbrb_get_rates()
  4. Грузия (Национальный банк Грузии / საქართველოს ეროვნული ბანკი) - currency_nbg_get_rates()
  5. Европа (Европейский центральный банк / European Central Bank) - currency_ecb_get_rates()
  6. Израиль (Банк Израиля /בנק ישראל‎) - currency_boi_get_rates()
  7. Казахстан (Национальный банк Республики Казахстан / Қазақстан ұлттық банкі) - currency_nbk_get_rates()
  8. Канада (Банк Канады/Banque du Canada) - currency_bdc_get_rates()
  9. Китай (Банк Китая/中国银行) - currency_boc_get_rates()
  10. Монголия (Центральный банк Монголии/Монгол Улсын Төв банк) - currency_bom_get_rates()
  11. Россия (Центральный банк России) - currency_cbr_get_rates()
  12. Украина (Национальный банк Украины / Національний банк України) - currency_nbu_get_rates()

Общие функции

Для работы всех парсеров требуются еще несколько дополнительных общих для всех или некоторых функций.
Функция нормирования курсов валют
Функция очистки сырых данных с HTML-страниц
Функция преобразования текста из национальной кодировки в UTF-8
Функция получения данных с сайтов банков

Файлы

Файл, содержащий, весь набор функций можно скачать по этой ссылке.

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

Системные требования скриптов

  • PHP версии 5 и выше;
  • SimpleXML - расширение для PHP, требуется при работе с источниками данных в RSS и XML форматах;
  • iconv или mbstring - расширения для PHP, требуется при работе с источниками данных в национальной кодировке;

Использование кода

Скачайте вышеуказанный файл и загрузите его на ваш сервер. Подключите его в вашем PHP-скрипте.
include('./currency.php');
Используйте функции этого скрипта.
Например, чтобы получить текущий курс валют Центробанка России надо вызвать функцию currency_cbr_get_rates().

Информация об ошибках

Если у вас проблемы с работой кода, то сперва смотрите на соответствие вашего хостинга системным требованиям, приведённым выше. Доустановите необходимое программное обеспечение. Проверьте нет ли проблем с получением данных именно от конкретного банка. Форматы и адреса источников данных многих банков бывает меняются со времени.

Об ошибках сообщайте в комментариях к соответствующим функциям. Автор также не откажется от поправок и улучшений кода, поскольку некоторые функции писались по принципу Quick & Dirty.

Лицензия

Весь код, приведенный в данной заметке и вышеуказанном файле публикуется на условиях лицензии GPL. Это означает, что вы можете копировать этот код, распространять и передавать другим лицам, в том числе публиковать на других сайтах. Можете изменять оригинальный код, адаптируя его под свои нужды, а также использовать его в своих разработках, в том числе и коммерческих. Единственное условие — требуется указывать авторство работы, как это было сделано в оригинале, нельзя выдавать себя за автора или приписывать чужое авторство работе.

Обновления

22-02-2012 (исправление) Обновлен код парсера валют банка Китая. Произошли изменения на странице банка.
22-07-2012
(исправление) Устранена ошибка в коде функции currency_http_request(). Неверное имя имя функции.
(исправление) Обновлен код парсера курсов валют банка Украины. Произошли изменения в адресе и верстке страниц сайта банка.
(обновление) Добавлен парсер текущих курсов валют банка Монголии.
01-07-2013 (исправление) Обновлен код парсера курсов валют банка Республики Беларусь. Изменилась кодировка страниц.

Немного истории

Или как появился этот код.
Несколько лет назад... Нет, сейчас я это не осилю. Потом допишу.

спасибо, скачал на

спасибо, скачал на рассмотрение

За код некоторых парсеров не

За код некоторых парсеров не пинайте сильно - некоторые писались на коленки. Будут доработки, кидайте сюда.

Спасибо

Большое спасибо, скачал, очень полезный скрипт. А то неохото ставить ссыль на баннер с курсами от всяких левых сайтов...

Никогда не бойтесь ставить

Никогда не бойтесь ставить ссылки. :)

Модуль

Приветствую! А в виде модуля вы еще не оформляли?
Для Казахстана код забираю. Спасибо Вам большое!

Оформил.Осталось добавить в

Оформил.

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

Как добавлю выложу на друпал.ру

Обновление 1. Парсер курсов валют банка Монголии.

Добавлен парсер текущих курсов валют банка Монголии. 37 курсов валют.
http://shaman.asiadata.ru/script/currency/bom