XML экспорт информеров курсов валют в банках Балашове.

Вы можете повысить информативность и полезность своего сайта для посетителей, разместив на нем информацию о лучших курсах обмена валют в банках Балашова. Сайт KOVALUT.RU предлагает данные в формате XML о лучших курсах валют в банках Балашова и курсах валют Центрального Банка России (ЦБ). Обладая исходными данными о курсах валют в XML - можно органично вписать их в дизайн сайта.

Так же, данные о лучших курсах валют в Балашове и курсах валют Центрального Банка России доступны в формате текстовых и графических информеров.

Внимание! Использование информации, представленной в XML формате, допускается только при условии, что непосредственно над или под блоком с информацией о курсах валют на вашей странице будет указана ссылка на источник информации. Гиперссылка должна указывать на страницу сайта KOVALUT.RU с курсами валют в Балашове:

https://kovalut.ru/kurs/balashov/

При переходе по данной гиперссылке посетитель сможет подробнее ознакомиться с курсами обмена валют в банках Балашова. Экспорт лучших курсов валют в банках Балашова и курсов ЦБ выполняется в формате XML с адреса:

https://informer.kovalut.ru/webmaster/getxml.php?kod=6405

Ниже располагаются: пример содержания XML; описание формата XML; пример PHP скрипта.

Содержание XML данных выглядит так:


<?xml version="1.0" encoding="utf-8"?>
<Exchange_Rates>
  <City>
    <Name>Балашов</Name>
    <Simple_Date>28 марта 2024</Simple_Date>
    <Digital_Date>28.03.2024</Digital_Date>
    <USD>
      <Buy>93,00</Buy>
      <Sell>98,20</Sell>
    </USD>
    <EUR>
      <Buy>100,20</Buy>
      <Sell>106,70</Sell>
    </EUR>
  </City>
  <Central_Bank_RF>
    <USD>
      <New>
        <Digital_Date>28.03.2024</Digital_Date>
        <Exch_Rate>92.5919</Exch_Rate>
      </New>
      <Old>
        <Digital_Date>27.03.2024</Digital_Date>
        <Exch_Rate>92.5745</Exch_Rate>
      </Old>
    </USD>
    <EUR>
      <New>
        <Digital_Date>28.03.2024</Digital_Date>
        <Exch_Rate>100.2704</Exch_Rate>
      </New>
      <Old>
        <Digital_Date>27.03.2024</Digital_Date>
        <Exch_Rate>100.4121</Exch_Rate>
      </Old>
    </EUR>
  </Central_Bank_RF>
</Exchange_Rates>

Описание формата XML:

City информация о лучших курсах покупки и продажи валюты в банках города:
  Name наименование города
  Simple_Date дата курсов валют в текстовом формате
  Digital_Date дата курсов валют в цифровом формате
  USD информация о курсах доллара:
    Buy лучший курс покупки доллара в банках города
    Sell лучший курс продажи доллара в банках города
  EUR информация о курсах евро:
    Buy лучший курс покупки евро в банках города
    Sell лучший курс продажи евро в банках города
Central_Bank_RF информация о курсах валют Центрального Банка России (ЦБ):
  USD информация о курсах доллара:
    New информация о новом (последнем по времени) курсе ЦБ:
      Digital_Date дата курсов валют в цифровом формате
      Exch_Rate курс обмена ЦБ
    Old информация о старом (предпоследнем по времени) курсе ЦБ:
      Digital_Date дата курсов валют в цифровом формате
      Exch_Rate курс обмена ЦБ
  EUR информация о курсах евро:
    New информация о новом (последнем по времени) курсе ЦБ:
      Digital_Date дата курсов валют в цифровом формате
      Exch_Rate курс обмена ЦБ
    Old информация о старом (предпоследнем по времени) курсе ЦБ:
      Digital_Date дата курсов валют в цифровом формате
      Exch_Rate курс обмена ЦБ

Пример php скрипта, осуществляющего загрузку XML с сайта KOVALUT.RU и последующий вывод курсов в виде HTML таблицы:


<?php
/*
PrintXML ver 1.03 от 6 февраля 2012 года
Данный скрипт загружает курсы валют в формате XML с сайта kovalut.ru и выводит их в виде HTML таблицы.
При этом загрузка новых курсов с сайта kovalut.ru происходит с использование кэширования.
Курсы загружаются с сайта, только если время модификации файла kov_6405.xml на Вашем сервере
устарело на определенную величину ($Reload_Period). В противном случае курсы извлекаются
непосредственно из файла kov_6405.xml. Такое кэширование ускорит загрузку Вашей страницы.

Если периодическая загрузка XML файла 'kov_6405.xml' с сайта kovalut.ru будет
осуществляться сторонними средствами, то функции:
  Load_XML_From_Kov_RF()
  Get_Kov_XML()
  GetFileTime()
можно убрать из программы и еще нужно будет заменить строку:
  $Kov_XML_Str = Get_Kov_XML();
на строку:
  $Kov_XML_Str = file_get_contents('kov_6405.xml');
*/
#Инициализируем глобальные переменные
$Site_Encoding 'UTF-8'#если Ваш сайт работает в кодировке UTF-8.
#$Site_Encoding = 'Windows-1251'; #если Ваш сайт работает в кодировке Windows-1251.
$Kov_City_Kod '6405'#Код города на сайте kovalut.ru
$Reload_Period 300#Время в секундах, по истечении которого необходимо обновлять 
                      #файл kov_6405.xml с курсами валют.
$Work_Dir './'#Рабочий каталог. в нем сохраняются загруженный kov_6405.xml

Kov_Main();

#Kov_Main - отображает курсы валют на Вашем Сайте.
function Kov_Main()
#Загружаем XML с курсами валют в строкувую переменную $Kov_XML_Str
  
$Kov_XML_Str Get_Kov_XML();
  if (
$Kov_XML_Str
  { 
#Создаем XML элемент на основе загруженной выше строки
    
$XML = new SimpleXMLElement($Kov_XML_Str);
    
#Печатаем XML элемент, загруженный с сайта kovalut.ru
    
if ($XML
    { 
Print_Kov_XML($XML);
    }
  }
}

#Print_Kov_XML - печатает курсы валют в городе и курсы валют ЦБ в виде таблицы
#Вы можете переписать данную функцию, чтобы она выводила курсы на Вашем сайте так, как Вам нужно.
function Print_Kov_XML($XML)
{ global 
$Kov_City_Kod$Site_Encoding;
  
#Проверяем необходимость перекодировки из UTF-8 в кодировку, установленную на сайте:
  
if ($Site_Encoding == 'UTF-8')
  { 
#Перекодировка не требуется. Просто загружаем переменные данными из XML
    
$CityName $XML->City->Name;
    
$CityDate $XML->City->Simple_Date;
  }
  else
  { 
#Перекодируем текстовые значения из кодировки UTF-8 в кодировку, установленную на сайте:
    
$CityName mb_convert_encoding($XML->City->Name$Site_Encoding"UTF-8");
    
$CityDate mb_convert_encoding($XML->City->Simple_Date$Site_Encoding"UTF-8");
  }
  
#Выводим HTML таблицу с курсами валют в городе и последние курсы установленные
  #Центральным Банком России
  
print <<<END_OF_RECORD
<table style="text-align: center;" border="0" cellpadding="0" cellspacing="3">
 <tr>
  <td colspan="3"><a href = "http://kovalut.ru/index.php?kod=
$Kov_City_Kod"  style="color: #000000;">{$CityName}
   <br />
{$CityDate}
   <br />Курсы валют в банках</a>
  </td>
 </tr>
 <tr>
  <td>&nbsp;</td>
  <td>покупка</td>
  <td>продажа</td>
 </tr>
 <tr>
  <td align="left">Доллар</td>
  <td>
{$XML->City->USD->Buy}</td>
  <td>
{$XML->City->USD->Sell}</td>
 </tr>
  <tr>
  <td align="left">Евро</td>
  <td>
{$XML->City->EUR->Buy}</td>
  <td>
{$XML->City->EUR->Sell}</td>
 </tr>
 <tr> <td colspan="3"><b>Курсы ЦБ</b></td> </tr>
 <tr>
  <td align="left">Доллар</td>
  <td>(c 
{$XML->Central_Bank_RF->USD->New->Digital_Date}):</td>
  <td>
{$XML->Central_Bank_RF->USD->New->Exch_Rate}</td>
 </tr>
  <tr>
  <td align="left">Евро</td>
  <td>(c 
{$XML->Central_Bank_RF->EUR->New->Digital_Date}):</td>
  <td>
{$XML->Central_Bank_RF->EUR->New->Exch_Rate}</td>
 </tr>
</table>
END_OF_RECORD;
}

#Get_FileTime - возвращает время модификации файла если он существует.
#Возвращает 0, если файла не существует. 
function GetFileTime($filename)
{ return ((
file_exists($filename)) ? filemtime($filename) : 0);
}

#Get_Kov_XML - возвращает строку, содержащую XML c курсами валют 
#Курсы загружаются из файла kov_6405.xml, если время модификации файла еще не устарело.
#Если время модификации файла устарело - XML c курсами извлекается с сайта и сохраняется в файле kov_6405.xml 
function Get_Kov_XML()
{ global 
$Work_Dir$Kov_City_Kod$Reload_Period;
  
$buf =''#В данную переменную будет загружен XML с курсами валют
  #Создаем переменную с именем файла, в котором будет хранится XML с курсами валют:
  
$XML_File_Name "{$Work_Dir}kov_{$Kov_City_Kod}.xml"
  
#Проверяем, устарело ли время модификации файла kov_6405.xml.
  
if (time() > (GetFileTime($XML_File_Name) + $Reload_Period)) 
  { 
#Сразу изменяем время модификации файла, чтобы минимизировать число лишних
    #параллельных загрузок XML с сайта
    
touch($XML_File_Name);
    
#Загружаем XML c сайта kovalut.ru:
    
$buf Load_XML_From_Kov_RF();
    
#Проверяем, удалось ли загрузить XML с сайта:
    
if ($buf)
    { 
#Загрузить с сайта получилось. Сохраняем XML с сайта в файл
      
file_put_contents($XML_File_Name$buf);
    }  
  }
  if (!
$buf)
  { 
#XML не был загружен с сайта (или не получилось или время модификации файла kov_6405.xml
    #еще не устарело). Загружаем XML с курсами валют из файла.
    
$buf file_get_contents($XML_File_Name);
  }
  return(
$buf);
}

#Load_XML_From_Kov_RF - возвращает строку, содержащую XML c курсами
#валют с сайта kovalut.ru В случае, если правильные XML данные загрузить
#не удалось - возвращается пустая строка.
function Load_XML_From_Kov_RF()
{ global 
$Kov_City_Kod;
  
$Kov_Site 'http://informer.kovalut.ru'#Адрес сайта, с которого нужно загружать xml
  #Расположение скрипта, возвращающего XML с курсами:
  
$Kov_XML_Loc '/webmaster/xml-table.php?kod='.$Kov_City_Kod;
  
#$Kov_XML_Loc = '/webmaster/getxml.php?kod='.$Kov_City_Kod;
  
$buf =''#В данную переменную будет считан XML с курсами валют 
  
$OldErrorReportLevel error_reporting(0);
  
#Открываем соединение с сайтом kovalut.ru по порту 80 и  таймаутом 10 секунд.
  
$buf file_get_contents($Kov_Site.$Kov_XML_Loc);
  if (!
$buf)
  { 
#Здесь можно обрабатывать ошибку, если не удалось установить
    #соединение с сайтом kovalut.ru.
    #echo "$errstr ($errno)<br />\n";
  

  else
  { 
#$XMLTempl - шаблон правильных XML данных.
    
$XMLTempl "\A<\\x3Fxml version=\"1.0\" encoding=\"utf-8\"\\x3F>\n<Exchange_Rates>.+?<\/Exchange_Rates>\Z";
    
#Проверяем, соответствуют ли загруженные данные - шаблону правильных XML данных
    
if (!preg_match("/$XMLTempl/is"$buf$matches))
    { 
#Не удалось загрузить правильные XML данные. Возвращаем пустую строку.
      
$buf '';
    }  
  }
  
#Восстанавливаем изначальный уровень сообщений об ошибках
  
error_reporting($OldErrorReportLevel);
  return(
$buf);
}
?>


Результатом работы данной программы будет следующее:

Балашов
27 января 2021
Курсы валют в банках
  покупка продажа
Доллар 74,26 76,47
Евро 90,36 92,54
Курсы ЦБ
Доллар (c 27.01.2021): 75.6354
Евро (c 27.01.2021): 91.6701