Курсы валют ЦентрБанка РФ
15.02.2009Недавно возникла необходимость написать php скрипт, отображающий курсы валют Центрального банка Российской Федерации. Благо сайт НацБанка РФ выдаёт удобную XML с курсами, поэтому скрипт на самом деле является парсером с возможностью сравнения курсов со вчерашним днём.
Вы можете скачать скрипт бесплатно с этого сайта прямо сейчас, а если заинтересует, то и прочитать описание функций и переменных.
Переменные:
$updURL – URL обновления, по умолчанию http://www.cbr.ru/scripts/XML_daily.asp – XML с курсами, установленными Центральным банком РФ на текущий день.
$path – путь на сервере, куда будут сохраняться временные файлы, с которыми в последующем и будут совершаться все операции. Внимание! Папка должна иметь права доступа для записи (CHMOD 777)
$fPrefix – префикс временных файлов. Создан просто для удобства нахождения наших файлов, если, например, Вы решите сохранять файлы в папку, где кроме наших временных файлов будут и другие.
$keepHistory – Установите true, если хотите, чтобы старые (позавчера и ранее) не удалялись автоматически. По умолчанию – false.
$currArray – Массив кодов валют, которые должны отображаться на сайте. Полный список валют есть на сайте ЦБ РБ
$changes – Установите false, если Вы не хотите отображать сравнение со вчерашним днём. По умолчанию true
Функции:
Итак конструктор класса выполняет задачу по определению необходимости обновления курсов и вызову функции отображения курсов на сайте.
Функция save2file сохраняет полученные новые курсы валют в файл
Функция view отвечает за вывод на сайт курсов валют из актуального файла.
Этот скрипт бесплатный и Вы можете использовать его у себя на сайте как Вам это необходимо, но мне будет приятно, если Вы оставите в комментариях запись о том, что скрипт нашёл своё применение не только в моём проекте

Великолепно, благодарю!
Ваши усилия не были напрасны, будем использовать =)
P.S. Я в php как свинья в апельсинах, может сделаете еще сравнение как на яндексе, типо – −0,0018 или −0,0737?
И включите подписку на коменты.
Comment от Дима — 01.03.2009 @ 09:47
Спасибо за скрипт! Установил на сайте http://www.fin-grupp.ru, вроде работает, но не показывает картинки «up» и «down»,устранить проблему не смог, так как тоже не особо разбираюсь в php. И не получилось добавить ещё одну валюту (826-GBP), вставил значение ‘826′ в 28 строку currency.class.php, но результата никакого, может ещё чего надо, Вы уж подскажите пожалуйста.
Comment от Алексей — 26.03.2009 @ 13:53
Алексей, насчёт картинок: в строках 89, 92, 95 выставляются названия картинок (down -> курс упал, up -> вырос, freeze – не изменился), выставьте там пути к Вашим стрелкам, например, $arr['x'][$key]['change'] = ‘/images/kurs_up.gif’; Насчёт добавления новой валюты: дождитесь следующего дня или удалите из папки /currency/ файл с текущей датой (cur_2009-03-26.php) и обновите страницу.
Дима, не проблема, думаю, что скрипт будет обновлён немного и возможность, которую Вы указали, реализую + ещё некоторые фишки. Подписку на комменты и rss добавил.
Comment от ctepeo — 26.03.2009 @ 14:08
Егор, большое спасибо за оперативный ответ!!!
С картинками разобрался, в принципе я и пытался именно в тех строках что-то изменить, но видимо отсутствие freeze.gif, в Вашей загрузочной папке, меня и сбило с толку. Потому как данные загрузились, а сравнивать их не с чем было ещё, поэтому должно было показывать freeze.gif,т.е. никаких изменений в курсе, а его вообще нет. Вообще я не понял, почему Вы сразу там не прописали путь к картинкам или хотя бы дописали .gif к «up» и «down». С Вашего позволения выставляю папку Вашего скрипта http://www.imeasi.eu/teised/currency.rar с прописанными путями и добавленной картинкой freeze, которую сделал в виде красного круга(ничего более умного не придумал). Может кому то будет легче так разобраться. Картинки поставил другие и в формате .png(посмотреть можно там же – http://www.fin-grupp.ru).
Добавить GBP так и не получилось. Сделал всё как Вы написали, пришёл новый файл cur_2009-03-26.php, в нём прописан GBP и его курс, но вот на сайте не отобразилось. Почему?
Comment от Алексей — 26.03.2009 @ 17:00
Алексей, согласен, тупанул с тем, что по умолчанию не появляются картинки, исправлю вместе с обновлением. С .png возникнут проблемы в ИЕ6. Версию, где у меня отобразились фунты отправил Вам на почту.
Comment от ctepeo — 26.03.2009 @ 17:17
IE6 особая тема
. Спасибо , что напомнили, переделал в .gif , хотя мои картинки это не особо спасёт , у них прозрачный фон, значит в IE6 будут в голубеньком квадратике.
Фунт так и не появился, да и ладно, этого пока хватит.
Спасибо за помощь!!!
Comment от Алексей — 26.03.2009 @ 17:55
Фунт всё таки появился!!!
Но вот была проблема с кодировкой на IE и Opera! Поменял на UTF-8, теперь нормально, но в Firefox иногда показывает крякозябрики вместо «руб.», но если обновить страницу то становится всё нормально. Сайт построен на joomla, может чего-то и конфликтует, так как ещё на одном модуле тоже есть проблема с крякозябриками. А в остальном, большое спасибо за скрипт!!!
Comment от Алексей — 28.03.2009 @ 12:14
Алексей, не сталкивался вплотную с джумлой, но попробуйте сохранить файл в utf-8
или выставить в начале файла принудительно заголовок: < ?php header('Content-Type: text/html; charset=utf-8'); ?>
Для отображения прозрачности для png в ИЕ6 рекомендую http://www.twinhelix.com/css/iepngfix/
Comment от ctepeo — 30.03.2009 @ 12:47
Простите, пожалуйста, за глупый вопрос, но не нашла как использовать этот чудесный скрипт…:(
Подскажите, как его вставить на странице? Я только учусь…
Comment от Саша Зайцева — 04.08.2009 @ 11:41
Саша! Вы бы написали где хотите его вставить, это просто отдельная страница или какая-нибудь CMS, например как я вставлял на Joomla, отсюда уже и отталкиваться. Или дайте ссылку на Ваш сайт.
Comment от Алексей — 05.08.2009 @ 00:24
Извините. К сожалению, сайта пока нет, я тренируюсь…
Хочется использовать информер на отдельной странице, без системы управления. Хочется увидеть листинг кода и попробовать разобраться:)
Спасибо!
Comment от Саша Зайцева — 06.08.2009 @ 01:29
Самое простое – просто вставить в Вашу страницу, как и другой обычный элемент, например, так:
Курс валют
http://www.imeasi.eu/teised/currency/default.html
Думаю здесь ничего сложного нет, но если есть вопросы спрашивайте, не стесняйтесь!!!
Comment от Алексей — 08.08.2009 @ 00:27
Comment от Чазов — 30.09.2009 @ 16:30
Очень четко написано, очень понравилось. Не жалею что прочитал
Comment от Павел Хохолин — 09.10.2009 @ 17:13
Может я и девушка, но в сайтостроении разбираюсь. Но! Курсы валют до сих пор не получается на сайт добавить.
Comment от Elena — 14.12.2009 @ 16:49
Елена, а почему не получается? Опишите проблему, может поможем!!! Самый простой способ вставить через iframe, например :
И не забывайте, что курсы будут показываться только если в папке currency есть файды с текущем курсом.
Comment от Алексей — 15.12.2009 @ 15:01
iframe src=»http://www.ujutdom.com/currency/currency.class.php»></iframe
Этот сайт почему-то не хочет отображать код?!
Comment от Алексей — 15.12.2009 @ 15:03
Самый простой способ вставить через iframe, например : iframe src=»currency.class.php»></iframe
(заменить ёлочки на кавычки и поставить перед в начале
Comment от Алексей — 15.12.2009 @ 15:09
У меня очень даже отобразился, может, у Вас кеш?
Comment от ctepeo — 15.12.2009 @ 15:10
Не знаю, что у меня, но ни в одном браузере я не вижу нормально то, что хотел написать!
Comment от Алексей — 15.12.2009 @ 15:19
Спасибо за ваш скрипт! Установил на локальной машине – работает как часы. А вот на сайте не желает. Создает файл курсов без данных. Ни кто не сталкивался? У меня подозрение, что сайт ЦБ закрыт для этого IP
Comment от 6ypaTuHo — 09.03.2010 @ 21:45
6ypaTuHo, проверьте получает ли скрипт данные
Comment от ctepeo — 09.03.2010 @ 21:51
Похоже, что не получает. Но я не знаю причину.
Comment от 6ypaTuHo — 10.03.2010 @ 12:26