За последние 24 часа нас посетили 99417 программистов и 5616 роботов. Сейчас ищут 2695 программистов ...

Парсер валюты, где проблема?

Тема в разделе "PHP для новичков", создана пользователем darttimon, 26 ноя 2016.

  1. darttimon

    darttimon Новичок

    С нами с:
    9 ноя 2016
    Сообщения:
    2
    Симпатии:
    0
    Добрый день.
    Подскажите где проблема? Парсер валют.
    Пишет ошибку Error open URL

    PHP:
    1. <?php
    2. $url = 'http://www.agroprombank.com/xmlinformer.php';
    3.  
    4. // Получаем XML файл информера
    5. $file = @file($url,"r") or die('Error open URL');
    6. $xml = implode($file);
    7.  
    8. // тут начал писать SeazoN
    9. xml_parse_into_struct($p,$xml,$vals,$index);
    10.  
    11. //забираем из массива парсера
    12. $code = '';
    13. $tag  = '';
    14. $type = '';
    15. foreach($vals as $k=>$v)
    16. {
    17.     if(isset($v['attributes']['CODE']))
    18.         $code = $v['attributes']['CODE'];
    19.     if($v['tag']=='CURRENCYBUY' || $v['tag']=='CURRENCYSELL')
    20.         $tag  = $v['tag'];
    21.     if(isset($v['attributes']['TYPE']))
    22.         $type  = $v['attributes']['TYPE'];
    23.  
    24.     if(isset($v['attributes']['DATE']) && $type =='official')
    25.         $courses['official_date'] = $v['attributes']['DATE'];
    26.     if($v['level']==3 && $v['type']=='complete' && $v['value']>0 )
    27.         $courses['official'][$code] = $v['value'];
    28.  
    29.     if($type=='commercial')
    30.     {
    31.         if(isset($v['attributes']['DATE']))
    32.             $courses['commercial_date'] = $v['attributes']['DATE'];
    33.         if($tag=='CURRENCYBUY'  && isset($v['value']) )
    34.             $courses['commercial'][$code]['buy'] = $v['value'];
    35.         if($tag=='CURRENCYSELL' && isset($v['value']) )
    36.             $courses['commercial'][$code]['sell'] = $v['value'];
    37.     }
    38.  
    39.     if($type=='internetbank')
    40.     {
    41.         if(isset($v['attributes']['DATE']))
    42.             $courses['internetbank_date'] = $v['attributes']['DATE'];
    43.         if($tag=='CURRENCYBUY'  && isset($v['value']) )
    44.             $courses['internetbank'][$code]['buy'] = $v['value'];
    45.         if($tag=='CURRENCYSELL' && isset($v['value']) )
    46.             $courses['internetbank'][$code]['sell'] = $v['value'];
    47.     }
    48. }
    49. // тут он <censored> ;)
    50.  
    51. /****
    52. Далее показан пример работы с массивом $courses. Непосредственно его вывод.
    53. код нагло выдран из примера A.Shtyrbu :)
    54. */  
    55. ?>
    56. <html>
    57. <head><title>PHP-Пример использования XML информера курсов валют (XML parser функций).</title></head>
    58. <body>
    59. <?php
    60.  
    61. if(is_array($courses['official'])){ ?>
    62. <table border="1">
    63. <caption>Официальные курсы валют на <?php echo $courses['official_date']?></caption>
    64.     <tr>
    65.         <th>Валюта</th>
    66.         <th>Курс</th>
    67.     </tr>
    68. <?php
    69. foreach($courses['official'] as $code=>$course)
    70.     echo "<tr><td>".$code."</td><td>".$course."</td></tr>";
    71.     ?>  
    72. </table>
    73.    
    74. <?php }
    75.    
    76. if(is_array($courses['commercial'])){?>
    77. <table border="1">
    78. <caption>Комерческие курсы валют на <?php echo $courses['commercial_date']?></caption>
    79.     <tr>
    80.         <th>Валюта</th>
    81.         <th>Покупка</th>
    82.         <th>Продажа</th>
    83.     </tr>
    84. <?php
    85. foreach($courses['commercial'] as $code=>$course)
    86.     echo "<tr><td>".$code."</td><td>".$course['buy']."</td><td>".$course['sell']."</td></tr>";
    87.     ?>  
    88. </table>
    89. <?php
    90. }
    91.    
    92. if(is_array($courses['internetbank']))
    93. {
    94. ?>
    95.  
    96.  
    97. <table border="1">
    98. <caption>Курсы валют системы Интернет-Банк на <?php echo $courses['internetbank_date']?></caption>
    99.     <tr>
    100.         <th>Валюта</th>
    101.         <th>Покупка</th>
    102.         <th>Продажа</th>
    103.     </tr>
    104. <?php
    105. foreach($courses['internetbank'] as $code=>$course)
    106.     echo "<tr><td>".$code."</td><td>".$course['buy']."</td><td>".$course['sell']."</td></tr>";
    107.     ?>    
     
  2. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    @darttimon, а вы пробовали заглянуть в описание функции file ? А если точнее, то обратите внимание на второй параметр, передаваемый в функцию.
    --- Добавлено ---
    P.S. Как по мне, то вообще логичней было бы использовать функцию simplexml_load_file , чем file