Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Парсинг XML файла через PHP
Форумы портала PHP.SU » PHP » Программирование на PHP » Парсинг XML файла через PHP

Страниц (1): [1]
 

1. criaton - 05 Февраля, 2012 - 12:18:08 - перейти к сообщению
На своем сервере в корневой директории лежит оригинал файл: currency_rates.xml

спарсенный с сайта: http://www[dot]cbr[dot]ru/scripts/XML_daily[dot]asp

Вот код, который вытаскивал значения когда файл был на сервере ЦБ,

что нудно в нем изменить чтобы данные парсились уже со своего сервера

CODE (htmlphp):
скопировать код в буфер обмена
  1.   $dater = date("d/m/Y");
  2.  
  3. $code_usd='R01235';
  4. $code_eur='R01239';
  5.  
  6. $file = file_get_contents("http://www.cbr.ru/scripts/XML_daily.asp?date_req=".$dater);
  7.  
  8. preg_match("#<Valute ID=\"" . $code_usd . "\".*?>(.*?)</Valute>#is", $file, $m);
  9.  
  10. preg_match("#<Value>(.*?)</Value>#is", $m[1], $r);
  11.  
  12. preg_match("#<Valute ID=\"" . $code_eur . "\".*?>(.*?)</Valute>#is", $file, $n);
  13.  
  14. preg_match("#<Value>(.*?)</Value>#is", $n[1], $p);
  15.  
  16. $dollar = str_replace(",", ".", $r[1]);
  17.  
  18. $euro = str_replace(",", ".", $p[1]);
2. voskan - 05 Февраля, 2012 - 12:21:08 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. <?PHP
  4.   // Получаем текущие курсы валют в rss-формате с сайта www.cbr.ru
  5.   $content = get_content();
  6.   // Разбираем содержимое, при помощи регулярных выражений
  7.   $pattern = "#<Valute ID=\"([^\"]+)[^>]+>[^>]+>([^<]+)[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>([^<]+)[^>]+>[^>]+>([^<]+)#i";
  8.   preg_match_all($pattern, $content, $out, PREG_SET_ORDER);
  9.   $dollar = "";
  10.   $euro = "";
  11.   foreach($out as $cur)
  12.   {
  13.     if($cur[2] == 840) $dollar = str_replace(",",".",$cur[4]);
  14.     if($cur[2] == 978) $euro   = str_replace(",",".",$cur[4]);
  15.   }
  16.   echo "Доллар - ".$dollar."<br>";
  17.   echo "Евро - ".$euro."<br>";
  18.   function get_content()
  19.   {
  20.     // Формируем сегодняшнюю дату
  21.     $date = date("d/m/Y");
  22.     // Формируем ссылку
  23.     $link = "http://www.cbr.ru/scripts/XML_daily.asp?date_req=$date";
  24.     // Загружаем HTML-страницу
  25.     $fd = fopen($link, "r");
  26.     $text="";
  27.     if (!$fd) echo "Запрашиваемая страница не найдена";
  28.     else
  29.     {
  30.       // Чтение содержимого файла в переменную $text
  31.       while (!feof ($fd)) $text .= fgets($fd, 4096);
  32.     }
  33.     // Закрыть открытый файловый дескриптор
  34.     fclose ($fd);
  35.     return $text;
  36.   }
  37. ?>
  38.  

(Добавление)
вопрос не прочитал, лучше парсить, сохранить к себе и выводить на страницу
3. Зверь - 05 Февраля, 2012 - 14:55:11 - перейти к сообщению
А зачем извращаться с регулярками, если у php целая куча библиотек для работы с xml?

 

Powered by ExBB FM 1.0 RC1