Сегодня я расскажу как при запуске какого-либо php сценария получать актуальный курс валют и использовать его в качестве значения переменной. Курс валют будем получать с единственного официального сервера данных - Центрального Банка РФ. Использовать будем PHP, Jquery (AJAX) и XML.
Задача
Создать скрипт, который будет при обращении к другому скрипту считывать официальный курс валюты, например, доллара($) на дату запроса с официального сервера ЦБ РФ.
Решение
1) Сначала нужно разобраться какие сервисы со стороны сервера ЦБ РФ доступны и будут полезными для решения данной задачи. Нужно отметить, что госбанк позаботился о формировании банка данных по курсам валют и смежной информации в формате XML. Эту информацию можно получить от их сервера, сформировав запрос в определенной нотации методом GET. Полный перечень возможных вариантов и примеров работы с информацией по курсам валют можно получить по этой официальной ссылке.
Воспользовавшись примерами запросов, для решения моей задачи требуется осуществлять запрос в формате URL: http://www.cbr.ru/scripts/XML_daily.asp?date_req=актуальная_дата'. Причем актуальная дата должна передаваться в строку в строгом соответствии, как предписывает сервер ЦБ, а именно: день/месяц/полный_год.
2) Результат запроса к серверу ЦБ вернет блок данных в формате XML, который нужно будет обработать. В этом случае можно получать блок в буферную переменную, в файл. Я выбираю для себя второе - файл. Самый подходящий способ обработать такой запрос для меня всегда был и остается модуль PHP - CURL. Т.е. через CURL функции я передаю запрос, а полученный отклик записываю в файл и затем разбираю содержимое файла (parse XML). Итак, создадим PHP скрипт, который будет формировать файл с указанным именем в каталоге самого скрипта (текущем каталоге).
3) Можете испытать этот скрипт и в результате его выполнения у вас будет формироваться XML файл cb.xml со всеми имеющимися у ЦБ котировками для общего доступа на указанную дату, в моем случае - сегодня.
Пример листинга XML с курсом валют
Теперь необходимо написать скрипт, который будет обрабатывать данные XML и выводить курс доллара из всего массива. Для этого создаем, например, для удобства еще один PHP скрипт и применим функции AJAX технологии на базе фреймворка Jquery.
4) Итак, допустим, срипт-обработчик имеет имя dollar.php. Я сразу приведу блок листинга файла dollar.php, который позволяет нам вывести курс доллара, в виде текста.
5) Как видно из скрипта, уникальным идентификатором доллара является его ID=R01235, который однозначно определяет все остальные значения массива (название валюты, международный код, актуальный курс в рублях за номинал). В нашем случае великолепные методы библиотеки Jquery однозначно помогли определить ноду со значением курса (R01235) из всего файла. Теперь эту переменную мы можем дальше передавать в калькуляторы, информеры и т.д.
Если у вас есть вопросы по данной, то создайте тему в моем форуме и я постараюсь ответить.