Курсы доллара и евро с сайта Центробанка на PHP

17 сентября 2019 PHP
Парсер получает курсы доллара и евро с сайта Центробанка каждые 24 часа и записывает их в файл кеша /log/course.txt
Скрипт полностью готов к работе и не требует каких-либо дополнительных настроек.
<?
function loadCourse(){
define("tsCourse","15:00:00"); # Время смены курса центральным банком
$courseFile = $_SERVER['DOCUMENT_ROOT']."/log/course.txt";
if (file_exists($courseFile)){
$lastModified = filemtime($courseFile);
// каждые 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) < tsCourse && date("H:i:s")>tsCourse ) ) {
return explode('|',file_get_contents($courseFile));
}
}
// Получаем текущие курсы валют с сайта www.cbr.ru
$content = getCourse();
if(!$content&&file_exists($courseFile)){// считаю по старому курсу если он есть
return explode('|',file_get_contents($courseFile));
}
// Разбираем содержимое, при помощи регулярных выражений
$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($courseFile, $course = ($dollar.'|'.$euro))<7)die('Ошибка записи в '.$courseFile);
return explode('|',$course);
}
function getCourse(){
// Формируем сегодняшнюю дату
$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;
}
?>
<?
list($dollar, $euro) = loadCourse();
?>
<?echo '$:'.$dollar;?>
<?echo '€:'.$euro;?>Здесь скидки и промокоды https://skeed.ru/shop/3c5d5531-b9ab-4414-be3f-4ae9d2c257b7
Добавить комментарий