Регистрация Войти
Войти через VK Войти через FB Войти через Google Войти через Яндекс
Войти через VK Войти через FB Войти через Google Войти через Яндекс
Поиск по сайту
Источником информации об официальном курсе валюты служит сайт Центробанка Российской Федерации
Обратившись по адресу сайта Центробанка http://www.cbr.ru/currency_base/XML_daily.asp?date_req=$date, где $data дата в формате ДД/ММ/ГГГГ, можно узнать курс валют, установленных в запрошенный день.
К примеру, узнать, каков был курс валюты на 14 января 2019 года, можно по адресу http://www.cbr.ru/currency_base/XML_daily.asp?date_req=14/01/2019. В результате будет открыта страница, содержащая таблицу с курсами валют, установленными в этот день. Остаётся только загрузить страницу и разобрать XML-код при помощи регулярных выражений. Ниже представлен скрипт, загружающий курсы доллара и евро с сайта Центробанка (http://www.cbr.ru)
Курс ЦБ РФ на 14.09.2024 00:00
Доллар - 90.9345
Евро - 100.7958
Пример получение курса валют на сегодня
// Получаем текущие курсы валют в rss-формате с сайта www.cbr.ru
$content = get_content();
// Разбираем содержимое, при помощи регулярных выражений
$pattern = "#<Valute ID=\"([^\"]+)[^>]+>[^>]+>([^<]+)[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>([^<]+)[^>]+>[^>]+>([^<]+)#i";
preg_match_all($pattern, $content, $out, PREG_SET_ORDER);
$dollar = "";
$euro = "";
foreach($out as $cur)
{
if($cur[2] == 840) $dollar = str_replace(",",".",$cur[4]);
if($cur[2] == 978) $euro = str_replace(",",".",$cur[4]);
}
echo "Доллар - ".$dollar."<br>";
echo "Евро - ".$euro."<br>";
function get_content()
{
// Формируем сегодняшнюю дату
$date = date("d/m/Y");
// Формируем ссылку
$link = "http://www.cbr.ru/scripts/XML_daily.asp?date_req=".$date;
// Загружаем HTML-страницу
$fd = @fopen($link, "r");
$text="";
if (!$fd) echo "Сервер ЦБ не отвечает";
else
{
// Чтение содержимого файла в переменную $text
while (!feof ($fd)) $text .= fgets($fd, 4096);
// Закрыть открытый файловый дескриптор
fclose ($fd);
}
return $text;
}
Вариант получение курса валют с кешированием
list($dollar, $euro)=load_kurs();
echo "<div>Курс ЦБ РФ на <b>".date("d.m.Y H:i",filemtime($_SERVER['DOCUMENT_ROOT']."/log/kurs.txt"))."</b><br>
Доллар - <b>".$dollar."</b><br>
Евро - <b>".$euro."</b></div>";
function load_kurs()
{
define("tsKurs","15:00:00"); # Время смены курса центральным банком
$kurs_file=fb_tmpdir."kurs.txt";
if (file_exists($kurs_file)){
$lastModified=filemtime($kurs_file);
// каждые 24 часа, но с учетом времени смены курса центральным банком
if (date("Y-m-d H:i:s",$lastModified) > date("Y-m-d H:i:s",time()-60*60*24) && !(date("H:i:s",$lastModified) < tsKurs && date("H:i:s")>tsKurs ) ) {
return explode('|',file_get_contents($kurs_file));
//echo "<!--Курс ЦБ на ".date("Y-m-d H:i:s",$lastModified)."<br>Доллар - <b>".$dollar."</b><br>Евро - <b>".$euro."</b><br>".$df1."-->";
}
}
// Получаем текущие курсы валют в rss-формате с сайта www.cbr.ru
$content = get_content();
if(!$content&&file_exists($kurs_file)){// считаю по старому курсу если он есть
return explode('|',file_get_contents($kurs_file));
}
// Разбираем содержимое, при помощи регулярных выражений
$pattern = "#<Valute ID=\"([^\"]+)[^>]+>[^>]+>([^<]+)[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>([^<]+)[^>]+>[^>]+>([^<]+)#i";
preg_match_all($pattern, $content, $out1, PREG_SET_ORDER);
$dollar = "";
$euro = "";
foreach($out1 as $cur1)
{
if($cur1[2] == 840) $dollar = str_replace(",",".",$cur1[4]);
if($cur1[2] == 978) $euro = str_replace(",",".",$cur1[4]);
}
if(file_put_contents($kurs_file, $kurs=($dollar.'|'.$euro))<7)die('Ошибка записи в '.$kurs_file);
return explode('|',$kurs);
}
function get_content()
{
// Формируем сегодняшнюю дату
$date = date("d/m/Y");
// Формируем ссылку
$link = "http://www.cbr.ru/scripts/XML_daily.asp?date_req=".$date;
// Загружаем HTML-страницу
$fd = @fopen($link, "r");
$text="";
if (!$fd) echo "<h3>Сервер ЦБ не отвечает!</h3>";
else
{
// Чтение содержимого файла в переменную $text
while (!feof ($fd)) $text .= @fgets($fd, 4096);
// Закрыть открытый файловый дескриптор
@fclose ($fd);
}
return $text;
}
.
Прокомментировать/Отблагодарить