Функция для получения курса валют от Центрального Банка

В этой статье я покажу как можно получить курс любой валюты относительно рубля на завтра.
Если обратиться к сайту цетробанка по урлу http://www.cbr.ru/scripts/XML_daily.asp?date_req=27.09.2013, то он выдает xml, в котором хранится информация о курсах валюты относительно рубля на дату 27.09.2013.
И все что нам нужно, это просто разобрать полученный от цетробанка xml файл и вытащить от туда курс для интересующей нас валюты.

Ниже представлен код с подробными комментариями:

<?php
function getCurs($moneyCode){
    // создаем объект для работы с XML
    $xml = new DOMDocument();
    // ссылка на сайт банка
    $url = 'http://www.cbr.ru/scripts/XML_daily.asp?date_req=' . date('d.m.Y');
    // получаем xml с курсами всех валют
    if ($xml->load($url)){
        // массив для хранения курсов валют
        $result = array(); 
        // разбираем xml
        $root = $xml->documentElement;
        // берем все теги 'Valute' и их содержимое
        $items = $root->getElementsByTagName('Valute');
        // переберем теги 'Valute' по одному
        foreach ($items as $item){
            // получаем код валюты
            $code = $item->getElementsByTagName('CharCode')->item(0)->nodeValue;
            // получаем значение курса валюты, относительно рубля
            $value = $item->getElementsByTagName('Value')->item(0)->nodeValue;
            // записываем в массив, предварительно заменив запятую на точку
            $result[$code] = str_replace(',', '.', $value);
        }
        // возвращаем значение курса, для запрошенной валюты
        return $result[$moneyCode];
    }else{
        // если не получили xml возвращаем false
        return false;
    }
}
// пример использования
echo getCurs('USD').'<br/>';
echo getCurs('EUR');
?>
Рассказать друзьям:


Функция для получения курса валют от Центрального Банка: 2 комментария

  1. Прекрасно работает даже 2 года спустя. Интуитивно простой и эффективный. Спасибо за сэкономленное время!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*