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)
Не писать ответ