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

Статус
В этой теме нельзя размещать новые ответы.

lusui

Создатель
Регистрация
8 Авг 2006
Сообщения
40
Реакции
0
Хочу найти скрипт который будет парсить (брать с сайта) курс валют, может кто-то, что нить мне подскажет
 
обяхательно с НБУ? есть скрип, который тянет с cbr
 
Выложи пожалуйста, кстати видел подобный скрипт на туфат.сом только вот не знаю откуда он курсы валют берет
 
Хочу найти скрипт который будет парсить (брать с сайта) курс валют, может кто-то, что нить мне подскажет

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($fd, 4096);  
    }  
    // Закрыть открытый файловый дескриптор  
    fclose ($fd);  
    return $text;  
  }  
?>
 
Хочу найти скрипт который будет парсить (брать с сайта) курс валют...
Если более дубово и прямолинейно, то есть универсальный подход, например:
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. скрипты переписал, ошибки поправил - все работает...
 
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], 0, 9);

$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], 0, 9);       

$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], 0, 9);

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
 
да все это интересно но не работает многое

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

Итак все меня спрашивают, так я тогда сразу сюда и выложу скрипт целиком, чтобы каждому не отвечать
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($handle, 4096);
   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;
?>
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху