Берем курс валюты с НБУ

Тема в разделе "Коммерческие", создана пользователем lusui, 26 апр 2008.

Информация :
Публиковать (для всех) нуленые версии, особенно от modulesgarden КАТЕГОРИЧЕСКИ не стоит. Тема мониторится оным разработчиком, а к нам приходят абузы которые нельзя игнорировать.
Статус темы:
Закрыта.
Модераторы: Amazko, Aste
  1. lusui

    lusui Создатель

    Регистр.:
    8 авг 2006
    Сообщения:
    40
    Симпатии:
    0
    Хочу найти скрипт который будет парсить (брать с сайта) курс валют, может кто-то, что нить мне подскажет
     
  2. prokopa

    prokopa

    Регистр.:
    27 июн 2007
    Сообщения:
    402
    Симпатии:
    105
    обяхательно с НБУ? есть скрип, который тянет с cbr
     
    lusui нравится это.
  3. samarity

    samarity

    Регистр.:
    4 июн 2006
    Сообщения:
    215
    Симпатии:
    26
    Выложи пожалуйста, кстати видел подобный скрипт на туфат.сом только вот не знаю откуда он курсы валют берет
     
  4. invader

    invader Серый кардинал в отставке :)

    Moderator
    • Супермодератор
    Регистр.:
    3 апр 2006
    Сообщения:
    2.586
    Симпатии:
    5.732
    PHP:
    <?

      
    // Получаем XML-файл с источника 
      
    $contentuc get_contentuc();  
      
    // Разбираем содержимое, при помощи регулярных выражений  
      
    $pattern "#<item>[\s]*<date>(.+?)</date>[\s]*"
                 
    "<code>(.+?)</code>[\s]*"
                 
    "<char3>(.+?)</char3>[\s]*"
                 
    "<size>(.+?)</size>[\s]*"
                 
    "<name>(.+?)</name>[\s]*"
                 
    "<rate>(.+?)</rate>[\s]*"
                 
    "<change>(.+?)</change>[\s]*"
                 
    "#i";  
      
    preg_match_all($pattern$contentuc$out);  
      unset(
    $out[0]); 
      for(
    $i 0$i count($out[1]); $i++) 
      { 
        if(
    $out[2][$i] == 840$dollaruc $out[6][$i]; 
        if(
    $out[2][$i] == 978$eurouc $out[6][$i]; 
        if(
    $out[2][$i] == 643$rubuc $out[6][$i]; 
        if(
    $out[2][$i] == 826$steruc $out[6][$i]; 
        if(
    $out[2][$i] == 860$summuc $out[6][$i]; 
        if(
    $out[2][$i] == 974$belarusuc $out[6][$i]; 
        if(
    $out[2][$i] == 981$gruzijauc $out[6][$i]; 
        if(
    $out[2][$i] == 124$kanadauc $out[6][$i]; 
        if(
    $out[2][$i] == 203$chehijauc $out[6][$i]; 
        if(
    $out[2][$i] == 208$danijauc $out[6][$i]; 
        if(
    $out[2][$i] == 233$eestiuc $out[6][$i]; 
        if(
    $out[2][$i] == 392$japanuc $out[6][$i]; 
        if(
    $out[2][$i] == 398$kazahuc $out[6][$i]; 
        if(
    $out[2][$i] == 428$latvijauc $out[6][$i]; 
        if(
    $out[2][$i] == 440$litnauc $out[6][$i]; 
        if(
    $out[2][$i] == 498$moldovauc $out[6][$i]; 
      } 

      echo 
    "100 USD - <B>$dollaruc</B> UAH<br>"
      echo 
    "100 EUR - <B>$eurouc</B> UAH<br>"
      echo 
    "10 RUR - <B>$rubuc</B> UAH<br>"
      echo 
    "100 Фунтов стерлингов Соединенного королевства - <B>$steruc</B> UAH<br>"
      echo 
    "100 Узбекских сумм - <B>$summuc</B> UAH<br>"
      echo 
    "10 Белорусских рублей - <B>$belarusuc</B> UAH<br>"
      echo 
    "100 Грузинских лари - <B>$gruzijauc</B> UAH<br>"
      echo 
    "100 Канадских долларов - <B>$kanadauc</B> UAH<br>";
      echo 
    "100 Чешских крон - <B>$chehijauc</B> UAH<br>";
      echo 
    "100 Датских крон - <B>$danijauc</B> UAH<br>";
      echo 
    "100 Эстонских крон - <B>$eestiuc</B> UAH<br>";
      echo 
    "1000 Японских йен - <B>$japanuc</B> UAH<br>";
      echo 
    "100 Казахских теньге - <B>$kazahuc</B> UAH<br>";
      echo 
    "100 Латвийских лат - <B>$latvijauc</B> UAH<br>";
      echo 
    "100 Литовских лит - <B>$litnauc</B> UAH<br>";
      echo 
    "100 Молдавских леев - <B>$moldovauc</B> UAH<br>";


      function 
    get_contentuc()  
      {  
        
    // Формируем ссылку к источнику валюты 
        
    $link "http://www.bank-ua.com/export/currrate.xml";  
        
    // Загружаем HTML-страницу  
        
    $fd fopen($link"r");  
        
    $text="";  
        if (!
    $fd) echo "Курсы временно недоступны";  
        else  
        {  
          
    // Чтение содержимого файла в переменную $text  
          
    while (!feof ($fd)) $text .= fgets($fd4096);  
        }  
        
    // Закрыть открытый файловый дескриптор  
        
    fclose ($fd);  
        return 
    $text;  
      }  
    ?>
     
    dotsenko и lusui нравится это.
  5. tritnu

    tritnu Постоялец

    Регистр.:
    5 мар 2008
    Сообщения:
    52
    Симпатии:
    5
    Если более дубово и прямолинейно, то есть универсальный подход, например:
    1. курс USD/UAH и EUR/UAH с сайта НБУ:
    PHP:
    <?
    $addr "http://www.bank-ua.com";  // откуда парсим
    $begblock1 "USD/UAH"$begblock2 "EUR/UAH"// начало блока
    $begin "size=\"2\" face=\"Tahoma\">"// фрагмент HTML-кода до полезных данных
    $end "&nbsp;</font>"// фрагмент HTML-кода после полезных данных
    $result = array();  // массив строк результата
    $screen file($addr);
    $i 0;
    while (
    $i sizeof($screen) && strpos($screen[$i], $begblock1) == false) {$i++;}
    $temp explode($begin$screen[$i 2]);
    $temp explode($end$temp[1]);
    $kursdollar $temp[0];
    $i 0;
    while (
    $i sizeof($screen) && strpos($screen[$i], $begblock2) == false) {$i++;}
    $temp explode($begin$screen[$i 2]);
    $temp explode($end$temp[1]);
    $kurseuro $temp[0];
    echo 
    "USD/UAH - <B>$kursdollar</B><BR>EUR/UAH - <B>$kurseuro</B>";
    ?>
    2. Или курс USD и EURO с РБК.ру:
    PHP:
    <?
    $addr "http://www.rbc.ru/index.html";
    $begblock1 "USD ЦБ РФ"$begblock2 "EUR ЦБ РФ";
    $begin "<FONT SIZE=\"-2\">&nbsp;";
    $end "</FONT>";
    $result = array();
    $screen file($addr);
    $i 0;
    while (
    $i sizeof($screen) && strpos($screen[$i], $begblock1) == false) {$i++;}
    $temp explode($begin$screen[$i 2]);
    $temp explode($end$temp[1]);
    $kursdollar $temp[0];
    $i 0;
    while (
    $i sizeof($screen) && strpos($screen[$i], $begblock2) == false) {$i++;}
    $temp explode($begin$screen[$i 2]);
    $temp explode($end$temp[1]);
    $kurseuro $temp[0];
    echo 
    "USD/RUB - <B>$kursdollar</B><BR>EURO/RUB - <B>$kurseuro</B>";
    ?>
    и т.д.
    P.S. скрипты переписал, ошибки поправил - все работает...
     
    Sandokan и lusui нравится это.
  6. MumiSan

    MumiSan Постоялец

    Регистр.:
    14 фев 2008
    Сообщения:
    100
    Симпатии:
    86
    PHP:
    <?          
    $addr "http://privatbank.ua:8085/info/ccyrate/rate.stm?typ=N";  // адрес страницы
    $begblock1 "EUR      /UAH"$begblock2 "USD      /UAH"$begblock3 "RUR      /UAH";// идентификатор начала блока
                       
    $begin "<td class=curses align=\"right\">"// фрагмент HTML-кода до полезных данных
    $end "</td>"// фрагмент HTML-кода после полезных данных

    $result = array();  // массив строк результата

    $screen file($addr);

    $i 0;
    while (
    $i sizeof($screen) && strpos($screen[$i], $begblock1) == false) {$i++;}
    $temp explode($begin$screen[$i 0]);
    $temp explode($end$temp[1]);
    $kurseuro substr($temp[0], 09);

    $i 0;
    while (
    $i sizeof($screen) && strpos($screen[$i], $begblock2) == false) {$i++;}
    $temp explode($begin$screen[$i 0]);
    $temp explode($end$temp[1]);
    $kursdollar substr($temp[0], 09);       

    $i 0;
    while (
    $i sizeof($screen) && strpos($screen[$i], $begblock3) == false) {$i++;}
    $temp explode($begin$screen[$i 0]);
    $temp explode($end$temp[1]);
    $kursrur substr($temp[0], 09);

    echo 
    "EUR/UAH - <B>$kurseuro</B><BR>USD/UAH &nbsp;&nbsp;&nbsp;&nbsp;- <B>$kursdollar</B><BR>RUR/UAH &nbsp;&nbsp;&nbsp;&nbsp;- <B>$kursrur</B>";
    ?>    
    <?
    //калькулятор\\   
       if (isset($_GET['srcCcy']))
           {
            $from = $_GET['srcCcy']; //курс валюты 
           }
       if (isset($_GET['srcAmt']))
           { 
            $howmany = $_GET['srcAmt']; //количество переводимой валюты 
           }
       if (isset($_GET['destCcy']))
           { 
            $to = $_GET['destCcy']; //курс валюты в которую переводим
           }           
     

       if (isset($_GET['srcCcy']) && isset($_GET['srcAmt']) && isset($_GET['destCcy']))
           {  
            $result_val = (($howmany * $from) / $to); // формуля =))))
           }
    ?>     
    <form name="Calculator" method="get">
    <center>
    <p class=default_text align=center><b>Пересчитать сумму</b></p>
    <table>
    <tr>
    <td  class=text align="right">из</td>
    <td class=text>
    <select  class=control name="srcCcy">
    <option value="<?=$kurseuro?>" <?if($kurseuro == $from) { echo "selected"; }?>>Евро</option>
    <option value="<?=$kursrur?>" <?if($kursrur == $from) {echo "selected"; }?>>Российский рубль</option>
    <option value="<?=$kursdollar?>" <?if($kursdollar == $from) {echo "selected";}?>>Доллар США</option>
    <option value="1" <?if(1 == $from) { echo "selected"; }?>>Украинская гривня</option>
    </select>
    &nbsp;сумма:&nbsp;<input name="srcAmt" type="text" value="<?if(isset($howmany)) {echo "$howmany"; }?>" size=20 maxlength=16>
    </td>
    </tr>
    <tr>
    <td class=text align="right">в</td>
    <td class=text>
    <select  class=control name="destCcy">
    <option value="<?=$kurseuro?>" <?if($kurseuro == $to) { echo "selected"; }?>>Евро</option>
    <option value="<?=$kursrur?>" <?if($kursrur == $to) { echo "selected"; }?>>Российский рубль</option>
    <option value="<?=$kursdollar?>" <?if($kursdollar == $to) { echo "selected"; }?>>Доллар США</option>
    <option value="1" <?if(1 == $to) { echo "selected"; }?>>Украинская гривня</option>
    </select>
    &nbsp;сумма:&nbsp;<input  class=control name="result" type="text" value="<?=$result_val?>" size=20 maxlength=16 readonly disabled>
    </td>
    </tr>  
    </table>

    <input type=submit value="Пощитать">

    </center>
    </form>
    более усовршенствованая версия предыдущего скрипта. парсит с сайта приватбанка(на етой странице данные НацБанка) + калькулятор.

    или тут - > Посмотреть вложение parser.rar
     
    Flllik нравится это.
  7. romverru

    romverru Писатель

    Регистр.:
    2 мар 2009
    Сообщения:
    8
    Симпатии:
    0
    да все это интересно но не работает многое

    да все это интересно но не работает многое, попробовал я эти скрипты и в результате создал свой, если кому интересно пишите.
    У меня была цель вывести только курс Евро а все остальное вырезать.
    :p
     
  8. romverru

    romverru Писатель

    Регистр.:
    2 мар 2009
    Сообщения:
    8
    Симпатии:
    0
    Ответ

    Итак все меня спрашивают, так я тогда сразу сюда и выложу скрипт целиком, чтобы каждому не отвечать
    PHP:
    $euro $_post['euro'];

    function 
    delteg($string)
    {
    $keyp=0;
    $out="";
           for (
    $i=0$i<strlen($string); $i++) {
                   if (
    $string[$i]=="<"):
                     
    $keyp=1;
                   endif;

                   if (
    $keyp==0):
                     
    $out.=$string[$i];
                   endif;

                   if (
    $string[$i]==">"):
                     
    $keyp=0;
                   endif;

           }
           
    $out substr($out,1,strlen($out)-3);
           return 
    $out;
    }

    $num = array();
    $char = array();
    $nominal = array();
    $name = array();
    $value = array();

    $n 0;

    $handle fopen ("http://www.cbr.ru/scripts/XML_daily.asp""r");
    while (!
    feof ($handle)) {
       
    $buffer fgets($handle4096);
       if (
    strpos($buffer"Num")>0) ($num[$n]=delteg($buffer));
       if (
    strpos($buffer"Char")>0) ($char[$n]=delteg($buffer));
       if (
    strpos($buffer"Nominal")>0) ($nominal[$n]=delteg($buffer));
       if (
    strpos($buffer"Name")>0) ($name[$n]=delteg($buffer));
       if (
    strpos($buffer"Value")>0) :
         
    $value[$n]=delteg($buffer);
         
    $n++;
       endif;
    }
    fclose ($handle);



    for (
    $i=5$i<6$i++) {
           
    $euro $value[$i];
           }
           echo 
    $euro;
    ?>
     
Статус темы:
Закрыта.