Alexanevsky
@Alexanevsky
Любительская web-разработка

Как сделать автоматическую конвертацию валюты относительно рубля?

Здравствуйте!

Есть необходимость настроить автоматическую конвертацию цены из рубля в некоторые другие.

Есть ряд блоков:
<span class="rub">1000</span> рублей
<span class="usd">????</span> долларов
<span class="eur">????</span> евро
<span class="yah">????</span> гривен
<span class="byr">????</span> белорусских рублей
Желательно, чтобы конвертация проходила относительно актуального курса ЦБ.
Как это сделать?

С уважением,
Александр.
  • Вопрос задан
  • 9090 просмотров
Решения вопроса 1
Alexanevsky
@Alexanevsky Автор вопроса
Любительская web-разработка
Большое спасибо @EnterSandman и @Taraflex за подсказки. Проблему я решил следующим образом:

Создаём PHP файл-парсер курса валют:
<?php 
 $content = get_content(); 
 $pattern = "#<Valute ID=\"([^\"]+)[^>]+>[^>]+>([^<]+)[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>([^<]+)[^>]+>[^>]+>([^<]+)#i"; 
 preg_match_all($pattern, $content, $out, PREG_SET_ORDER); 
 
 $usd = ""; 
 $eur = ""; 
 $byr = ""; 
 $uah = ""; 
 $kzt = ""; 

 foreach($out as $cur) 
 
 { 
   if($cur[2] == 840) $usd  = str_replace(",",".",$cur[4]); 
   if($cur[2] == 978) $eur   = str_replace(",",".",$cur[4]); 
   if($cur[2] == 974) $byr   = str_replace(",",".",$cur[4]); 
   if($cur[2] == 980) $uah   = str_replace(",",".",$cur[4]); 
   if($cur[2] == 398) $kzt   = str_replace(",",".",$cur[4]); 
 } 

 echo "<span id=\"bank-usd\">".$usd."</span> <span id=\"bank-eur\">".$eur."</span> <span id=\"bank-byr\">".$byr."</span> <span id=\"bank-uah\">".$uah."</span> <span id=\"bank-kzt\">".$kzt."</span>"; 
 
 function get_content() 

 { 
   $link = "http://www.cbr.ru/scripts/XML_daily.asp"; 
   $fd = fopen($link, "r"); 
   $text=""; 
   echo "";
   while (!feof ($fd)) $text .= fgets($fd, 4096); 
   fclose ($fd); 
   return $text; 
 }

?>
В любом месте HTML документа вставляем загрузку этого файла, а всё его содержимое оборачиваем в display: none.

Создаём JS файл, обрабатывающий курсы валют и конвертирующий нашу 1000 рублей в каждую из них:
var rub = 1000;
var bankUSD = document.getElementById('bank-usd').innerText;
var bankEUR = document.getElementById('bank-eur').innerText;
var bankBYR = document.getElementById('bank-byr').innerText;
var bankUAH = document.getElementById('bank-uah').innerText;
var bankKZT = document.getElementById('bank-kzt').innerText;

document.getElementById('rub').innerHTML = rub;
document.getElementById('usd').innerHTML = (rub/bankUSD).toFixed(2);
document.getElementById('eur').innerHTML = (rub/bankEUR).toFixed(2);
document.getElementById('byr').innerHTML = (10000*rub/bankBYR).toFixed(0);
document.getElementById('uah').innerHTML = (10*rub/bankUAH).toFixed(1);
document.getElementById('kzt').innerHTML = (100*rub/bankKZT).toFixed(0);
Для белорусской, казахской и украинской валют пришлось добавить ещё несколько нулей для корректного вывода.

И в любом удобном месте, где нам требуется, выводим:
<span id="rub"></span> рублей
<span id="byr"></span> рублей
<span id="uah"></span> гривен
<span id="kzt"></span> тенге
<span id="usd"></span> долларов
<span id="eur"></span> евро
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
EnterSandman
@EnterSandman
Эникей
я не силён в JS, но направление вам даду

jsfiddle.net/Bn7X9
Ответ написан
Taraflex
@Taraflex
Ищу работу. Контакты в профиле.
Курс цб можно взять тут
www.cbr.ru/scripts/XML_daily.asp
Ответ написан
@Grag
Нацбанк в помощь.

Но если ресурс не русский - можно получить иск в суд конвертируя злотый к рублю по русскому курсу.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы