Курс валют cbr
Получаем курс валют с cbr.ru , скачиваем в корень, и вытаскиваем значения текущего курса.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
<?php class Rates { public function getXmlRates () // Получаем котировки { $dateNow = date("d-m-Y"); if (file_exists("XML_daily_last.asp")) { $dateCreateFile = date("d-m-Y" , filemtime('XML_daily.asp')); } else { $dateCreateFile = date("d-m-Y", time()-86400); } if ($dateNow != $dateCreateFile) { $url = "http://www.cbr.ru/scripts/XML_daily.asp"; exec("wget -O XML_daily.asp {$url}"); // получаем курс на сегодня exec("wget -O XML_daily_last.asp {$url}?date_req=".date("d/m/Y", time() - 86400)); // получаем курс за вчера } } public function __construct() { $this->getXmlRates(); } public function getRates ($type, $last = 0) // Получаем курс { $type = strtoupper($type); $xml = simplexml_load_file('XML_daily.asp'); $xml_last = simplexml_load_file('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); } } public function changeRates ($type) // Сравнение курса, сегодня/вчера { $type = strtoupper($type); if ($this->getRates($type) > $this->getRates($type, 1)) { return 1; } elseif (($this->getRates($type)) < ($this->getRates($type, 1))) { return -1; } elseif ($this->getRates($type) == $this->getRates($type, 1)) { return 0; } } } $out = new Rates; echo "Текущий курс EUR: {$out->getRates("EUR")} | Курс вчера: {$out->getRates("EUR",1)}<br />Текущий курс USD {$out->getRates("USD")}"; ?> |
Ещё вариант , напрямую с сервера cbr
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
<?php class Rates { function rateOut ($value) { // Определяем Валюту $value = strtoupper($value); if ($value == "USD") { $val = 1; } elseif ($value == "EUR") { $val = 5; } return $this->getRates($val); } function getRates ($value) { // Получаем значение валюты return simplexml_load_file("https://wm.exchanger.ru/asp/XMLWMList.asp?exchtype=$value")->BankRate; } } $obj = new Rates; echo $obj->rateOut("usd"); ?> |
Если на сервере запрещен вызов функции exec, стоит воспользоваться командой file_get_contents($url); и записать результат с помощью fwrite(); Например:
1 2 3 4 5 6 |
<?php $getRates = file_get_contents("http://www.cbr.ru/scripts/XML_daily.asp"); $file = fopen("XML_daily.asp", "w+"); fwrite($file, $getRates); fclose($file); ?> |
Иногда стоит использовать абсолютный путь к файлу
1 2 |
$ROOT_DIR = $_SERVER['DOCUMENT_ROOT']; $xml = simplexml_load_file("$ROOT_DIR/XML_daily.asp"); |
Вариант загрузки котировок без exec… Read More »