Получение курса валют (CBR)

Иногда на сайтах(или для сайтов) необходим курс валют. Делают его по-разному:

  • “парсят” текстовые информеры
  • “парсят” различные страницы с курсами, в том числе и “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, Вы бесплатно получаете массу дополнительных модулей призванных облегчить Вам жизнь, увеличить потенцию и уменьшить счета за горячую воду и сэкономить уйму времени на составление регулярных выражений.

Share to Facebook
Share to LiveJournal
Share to MyWorld
Share to Odnoklassniki
Share to Yandex

10.12.05  
MiRacLe
 |   | RSS  | trackback url

Performance Optimization WordPress Plugins by W3 EDGE