Мега сателит
<?php 
/**
 * Class для работы с cbr.ru
 * Получаем курс валют
 */
class ExchangeRates {
    /**
     * Папка в той же директории где и скрипт
     */
    public $dir_save = 'tmp/';
    /**
     * Загружаем/обновляем курсы валют
     * @return NULL создаются/обновляются файлы
     */
    public function getRates()
    {
        $date = new DateTime();
        $dateNow = $date->format('d/m/Y');
        $dateYesterday = $date->modify("-1 day")->format('d/m/Y');

        $dateCreateFile = file_exists($this->dir_save . "XML_daily_last.asp") ? $date->setTimestamp(filemtime($this->dir_save . 'XML_daily.asp'))->format('d-m-Y') : $date->modify("-1 day")->format('d-m-Y');

        if ($dateNow != $dateCreateFile) {
            $url = "http://www.cbr.ru/scripts/XML_daily.asp";

            $this->updateFile("XML_daily.asp", file_get_contents($url . "?date_req=" . $dateNow));
            $this->updateFile("XML_daily_last.asp", file_get_contents($url . "?date_req=" . $dateYesterday));
        }
    }
    /**
     * Загружаем файл
     * @param  string $file_name Название файла
     * @param  string $message   Содержание файла
     * @return NULL            Запись в файл
     */
    public function updateFile($file_name, $message)
    {
        $file    = fopen($this->dir_save . $file_name, 'w+');
        fwrite($file, $message);
        fclose($file);
    }
    /**
     * Вывод ошибок
     * @param  string $msg Сообщение об ошибке
     * @return NULL      Ошибка и die
     */
    public function printError($msg)
    {
        die("Error: " . $msg . PHP_EOL);
    }
    /**
     * Формирование ошибок
     * @return NULL     формирование ошибок и вывод
     */
    public function errors()
    {
        if (!is_dir($this->dir_save ) && !mkdir($this->dir_save)){
            $this->printError("No found dir and can't create dir " .  $this->dir_save);
        }
    }
    /**
     * Стартуем юху
     */
    public function __construct()
    {
        $this->errors();
        $this->getRates();
    }
    /**
     * Получаем котировку
     * @param  string  $type Валюта
     * @param  integer $last 0 - текущий день / 1 - предыдущий день
     * @return integer        курс
     */
    public function get($type, $last = 0)
    {   
        $type = strtoupper($type);

        $xml = simplexml_load_file($this->dir_save . 'XML_daily.asp');
        $xml_last = simplexml_load_file($this->dir_save . 'XML_daily_last.asp');
        
        foreach ($xml as $key => $value) {
            if($value->CharCode == $type){
                $res = $value->Value;
            }
        }

        foreach ($xml_last as $key => $value) {
            if($value->CharCode == $type){
                $resLast = $value->Value;
            }
        }

        if ($last == 0) {
            return str_replace(",", ".", $res);
        } elseif ($last == 1) {
            return str_replace(",", ".", $resLast);
        }
    }
    /**
     * Изменение курса
     * @param  string $type Валюта
     * @return integer       1 - курс больше / -1 - меньше / 0 - без изменеинй
     */
    public function change($type)
    {
        $type = strtoupper($type);

        if ($this->get($type) > $this->get($type, 1)) {
            return 1;
        } elseif (($this->get($type)) < ($this->get($type, 1))) {
            return -1;
        } elseif ($this->get($type) == $this->get($type, 1)) {
            return 0;
        }
    }
}

$out = new ExchangeRates;
echo "Текущий курс EUR: {$out->get("EUR")} | Курс вчера: {$out->get("EUR",1)} {$out->change("eur")}<br />Текущий курс USD {$out->get("USD")} | Курс вчера: {$out->get("USD",1)} {$out->change("usd")}";