Trigub_Ilia

Достать курс валют по ЦБ

Jan 24th, 2018
185
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function GetRateFromCBR($CURRENCY)
  2. {
  3.     global $DB;
  4.     global $APPLICATION;
  5.  
  6.     CModule::IncludeModule('currency');
  7.  
  8.     $QUERY_STR = $DATE_RATE = "";
  9.     #$date_req = date("d/m/Y", AddToTimeStamp(array("DD"=>1), mktime())); // +1 day
  10.    $date_req = date("d/m/Y", mktime());
  11.  
  12.     //делаем запрос к www.cbr.ru с просьбой отдать курс на нынешнюю дату
  13.     $strQueryText = QueryGetData("www.cbr.ru", 80, "/scripts/XML_daily.asp?date_req=".$date_req, $QUERY_STR, $errno, $errstr);
  14.  
  15.     //получаем XML и конвертируем в кодировку сайта
  16.     $charset = "windows-1251";
  17.     if (preg_match("/<"."\?XML[^>]{1,}encoding=[\"']([^>\"']{1,})[\"'][^>]{0,}\?".">/i", $strQueryText, $matches))
  18.     {
  19.         $charset = Trim($matches[1]);
  20.     }
  21.     $strQueryText = eregi_replace("<!DOCTYPE[^>]{1,}>", "", $strQueryText);
  22.     $strQueryText = eregi_replace("<"."\?XML[^>]{1,}\?".">", "", $strQueryText);
  23.     $strQueryText = $APPLICATION->ConvertCharset($strQueryText, $charset, SITE_CHARSET);
  24.  
  25.     require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/classes/general/xml.php");
  26.  
  27.     //парсим XML
  28.     $objXML = new CDataXML();
  29.     $res = $objXML->LoadString($strQueryText);
  30.     if($res !== false)
  31.         $arData = $objXML->GetArray();
  32.     else
  33.         $arData = false;
  34.  
  35.     $NEW_RATE=Array();
  36.  
  37.     //получаем курс нужной валюты $CURRENCY
  38.     if (is_array($arData) && count($arData["ValCurs"]["#"]["Valute"])>0)
  39.     {
  40.         for ($j1 = 0; $j1<count($arData["ValCurs"]["#"]["Valute"]); $j1++)
  41.         {
  42.             if ($arData["ValCurs"]["#"]["Valute"][$j1]["#"]["CharCode"][0]["#"]==$CURRENCY)
  43.             {
  44.                 $NEW_RATE['CURRENCY']=$CURRENCY;
  45.                 $NEW_RATE['RATE_CNT'] = IntVal($arData["ValCurs"]["#"]["Valute"][$j1]["#"]["Nominal"][0]["#"]);
  46.                 $NEW_RATE['RATE'] = DoubleVal(str_replace(",", ".", $arData["ValCurs"]["#"]["Valute"][$j1]["#"]["Value"][0]["#"]));
  47.                 $NEW_RATE['DATE_RATE']=$DATE_RATE;
  48.                 break;
  49.             }
  50.         }
  51.     }
  52.  
  53.     //$NEW_RATE["RATE"] = 81.84;
  54.  
  55.     return $NEW_RATE["RATE"];
  56. }
Add Comment
Please, Sign In to add comment