Курсы доллара и евро с сайта Центробанка на 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
Добавить комментарий