Skip to main content

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

Курсы доллара и евро с сайта Центробанка на 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;?>
Похожие записи
Удалить значение из массива на PHP

Удалить значение из массива по ключу на PHP довольно простая задача, но вот когда необходимо... Читать далее

Создание чат-бота для Viber

В этой статье рассмотрим как создать простого чат-бота для Viber, который будет принимать и отправлять... Читать далее

Регулярные выражения PHP: preg_match, preg_split, preg_replace

Регулярные выражения - это мощный алгоритм сопоставления с образцом, который может быть выполнен в одном... Читать далее

Парсер XML PHP с использованием SimpleXML. Примеры

Существует несколько способов парсить XML-данные с использованием PHP, один из которых - SimpleXML. В предыдущей... Читать далее

Интеграция/чтение RSS PHP. PHP скрипт вывода RSS

В PHP начиная с 5 версии есть встроенная библиотека для работы с XML данными SimpleXML.... Читать далее

Отправка письма с вложениями на PHP и AJAX

Мы уже рассматривали, как сделать форму обратной связи на PHP и Ajax. Сегодня мы модернизируем... Читать далее

Добавить комментарий

*

code