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

Этот набор готовых функций на 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_cbr_get_rates()
  11. Украина (Национальный банк Украины / Національний банк України) - 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 Обновлен код парсера валют банка Китая. Произошли изменения на странице банка.

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

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

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

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

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

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

Спасибо

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

Модуль

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

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

Оформил.

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

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

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступны HTML теги: <a> <em> <strong> <cite> <code> <s> <u> <ul> <ol> <li> <dl> <dt> <dd>
  • Строки и параграфы переносятся автоматически.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>. Beside the tag style "<foo>" it is also possible to use "[foo]".
  • Images can be added to this post.

Подробнее о форматировании

CAPTCHA
Защита от спама: ответьте на вопрос.
Image CAPTCHA
Введите символы с картинки. Только заглавные буквы английского алфавита.