Иногда на сайтах(или для сайтов) необходим курс валют. Делают его по-разному:
- “парсят” текстовые информеры
- “парсят” различные страницы с курсами, в том числе и “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)
