PHP-скрипт для загрузки курсов валют
 
			Многие из Вас неоднократно видели, что на некоторых сайтах выводятся курсы валют. Разумеется, администраторы этих сайтов сами ежедневно их не меняют (надеюсь). Они их подгружают с сайта ЦентроБанка. И в этой статье я дам код PHP-скрипта для загрузки курсов валют с сайта ЦентроБанка и вывода их на страницу.
Привожу сразу код скрипта:
<?php
  $date = date("d/m/Y"); // Сегодняшняя дата в необходимом формате
  $link = "http://www.cbr.ru/scripts/XML_daily.asp?date_req=$date"; // Ссылка на XML-файл с курсами валют
  $content = file_get_contents($link); // Скачиваем содержимое страницы
  $dom = new domDocument("1.0", "cp1251"); // Создаём DOM
  $dom->loadXML($content); // Загружаем в DOM XML-документ
  $root = $dom->documentElement; // Берём корневой элемент
  $childs = $root->childNodes; // Получаем список дочерних элементов
  $data = array(); // Набор данных
  for ($i = 0; $i < $childs->length; $i++) {
    $childs_new = $childs->item($i)->childNodes; // Берём дочерние узлы
    for ($j = 0; $j < $childs_new->length; $j++) {
      /* Ищем интересующие нас валюты */
      $el = $childs_new->item($j);
      $code = $el->nodeValue;
      if (($code == "USD") || ($code == "EUR")) $data[] = $childs_new; // Добавляем необходимые валюты в массив
    }
  }
  /* Перебор массива с данными о валютах */
  for ($i = 0; $i < count($data); $i++) {
    $list = $data[$i];
    for ($j = 0; $j < $list->length; $j++) {
      $el = $list->item($j);
      /* Выводим курсы валют */
      if ($el->nodeName == "Name") echo $el->nodeValue." - ";
      elseif ($el->nodeName == "Value") echo $el->nodeValue." рублей<br />";
    }
  }
?>
	Я постарался код тщательно прокомментировать, поэтому с его пониманием проблем возникнуть не должно. Так же, чтобы понять, почему столько и почему именно такие циклы, а также откуда берутся определённые условия, я настоятельно рекомендую зайти по ссылке из кода (только дату подставьте). Тогда Вы увидите XML-документ, и Вам уже будет гораздо проще понять, почему именно такой код был написан.
Вот так легко можно загрузить курсы различных валют мира с использованием PHP.
- 
					Создано 15.03.2013 12:13:57  
- 
					 Михаил Русаков Михаил Русаков
 
			 
			 
		 
				 
			 
				 
				 
				 
				
Комментарии (12):
не могу сменить кодировку.у меня на сайте windows-1251.в коде все испробывал.абракадабры выходят.как можно исправить?
Ответить
http://myrusakov.ru/php-encoding-problems.html
Ответить
михаил,можно ли оставить етот файл в дерриктории сайта,и извлеч из него переменные в document.write для всех страниц сайта?потому-что зто не совсем постой код.
Ответить
Можно, только этот файл надо будет подключать через require_once, а после выводить полученные переменные из него через PHP.
Ответить
А как сделать показ курса валют в одну строку?
Ответить
Убрать <br /> из кода.
Ответить
Добрый день, прошу автора мне помочь нужно реализовать вывод инфы из xml файла, (по аналогии что-то не получилось сделать) http://www.aviasales.ru/latest-offers.xml вывод на сайте на Вордпресс.Спасибо
Ответить
А возможно ли откорректировать скрипт.. Т.е выводить курс по отношению не к рублю, а к евро. Что бы выводилось примерно так: Доллар США= хх евро а в идеале так: 1 евро= xx Долларов США и соответственно так же с еще парой валют. С самим рублем например и Украинской гривной. Ну тут уже по аналогии. Вообще возможно ли такое решение
Ответить
Денис, ничего не реального в этом не вижу.
Ответить
Я так делаю: $xml = simplexml_load_file('http://www.cbr.ru/scripts/XML_daily.asp'); $usd = (string)$xml->Valute[9]->Value; $eur = (string)$xml->Valute[10]->Value;
Ответить
Скажите пожалуйста почему этот скрипт работает на локалке а при переносе сайта на хостинг скрипт не работает??,использую MODX
Ответить
Спасибо! все работает :)
Ответить
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.