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

    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> евро
    Ответ написан
    5 комментариев