Иногда на сайтах(или для сайтов) необходим курс валют. Делают его по-разному:
- “парсят” текстовые информеры
- “парсят” различные страницы с курсами, в том числе и “http://www.cbr.ru/currency_base/D_print.asp[?date_req={dd.mm.yy}]”(сам до некоторого времени так делал)
- Возможно кто-то использует сервисы CBR(а у меня они перестали недавно работать – даже WSDL-валидатор ругается на методы)
И вот в поисках(в случайных) наткнулся на страницу с курсами в формате XML – “http://www.cbr.ru/scripts/XML_daily.asp[?date_req={d/m/y}]”. Поскольку в PHP5 крайне упростилась работа с оным xml-ем написал функцию для извлечения курса:
function getExchange($code = 'USD') { $valutes = array('USD' => 'R01235','EUR' => 'R01239'); // если нужно - можно добавить код монгольского тугрика... $code = strtoupper($code); if (!in_array($code,array_keys($valutes))) { // неизвестный(нафикненужный) код валюты return false; } else { $idValute = $valutes[$code]; $dom = new DomDocument; // создаём DOM-дерево $dom->load(getXML()); //функция getXML у меня просто возвращает строку с содержимым XML-ки, адрес которой написан выше, и по возможности "дёргает" её не с сервера cbr, а из "локального кеша". $xpath = new DOMXPath($dom); // создаём XPath-объект $query = '//ValCurs/Valute[@ID="'.$idValute.'"]/Value'; //вся прелесть и простота открывается именно в этом хитром выражении XPath $entries = $xpath->query($query); // выполняем "наихитрейшее" выражение $result = $entries->item(0)->nodeValue; // и имеем необходимый результат (внимание - он в строковом представлении - при необходимости манипулировать им в вычислительных процессах лучше сделать явный cast во float) return $result; } }
P.S.
Купив у нас php, Вы бесплатно получаете массу дополнительных модулей призванных облегчить Вам жизнь, увеличить потенцию и уменьшить счета за горячую воду и сэкономить уйму времени на составление регулярных выражений.
Получение курса валют (CBR)