rates_cbr()
— Получить весь список валют
rates_cbr("USD")
— Получить курс рубля к конкретной валюте
function rates_cbr($code = false){ $cache_file = $_SERVER['DOCUMENT_ROOT']."/rates_cbr.cache.php"; $data = array(); if (!is_file($cache_file) || filemtime($cache_file) < time() - 3600*6) { $url = "http://www.cbr.ru/scripts/XML_daily.asp?date_req=".date("d/m/Y"); $is_valid = false; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $output = curl_exec($ch); $json_daily_temp = simplexml_load_string($output); if(curl_getinfo($ch, CURLINFO_HTTP_CODE) === 200 && $json_daily_temp && !empty($json_daily_temp->Valute)){ $is_valid = true; } curl_close($ch); if($is_valid){ foreach($json_daily_temp as $k => $v){ $ta = []; //$ta["ID"] = strval($v->attributes()->ID); //$ta["NumCode"] = strval($v->NumCode); //$ta["CharCode"] = strval($v->CharCode); //$ta["Nominal"] = strval($v->Nominal); $ta["n"] = (string) $v->Name; $ta["v"] = round(floatval(str_replace(",",".", $v->Value)) / intval($v->Nominal), 2); $data[strval($v->CharCode)] = $ta; } file_put_contents($cache_file, "<?php return " . var_export($data, true) . " ?>"); }elseif(is_file($cache_file)){ // Если не достучались до cbr, то продлеваем время жизни кэша $data = include $cache_file; file_put_contents($cache_file, "<?php return " . var_export($data, true) . " ?>"); } }elseif(is_file($cache_file)){ // Если не достучались до cbr, то продлеваем время жизни кэша $data = include $cache_file; file_put_contents($cache_file, "<?php return " . var_export($data, true) . " ?>"); } if(!empty($code)){ $code = strtoupper($code); if(!empty($data[$code])){ return $data[$code]['v']; }else{ return false; } } return $data; }
Комментарии (1)
Не писать ответ