На нашем сайте мы используем cookie для сбора информации технического характера и обрабатываем IP-адрес вашего местоположения. Продолжая использовать этот сайт, вы даете согласие на использование файлов cookies. Здесь вы можете узнать, как мы пользуемся файлами cookies.
Я согласен
логотип upread.ru

Курс валют и котировки акций онлайн на PHP


Понадобилось для одного проекта получать данные о курсе валют относительно рубля и котировки российских акций на текущий момент на своем сайте. Давайте научимся это делать.

Валюты PHP

Для получений курсов валют будем использовать Банк России. Есть такая ссылка

http://www.cbr.ru/scripts/XML_daily.asp?date_req=13/06/2021
которая выдает xml с курсами валюты на заданный день. Можно пройти по ссылке и посмотреть в браузере:

http

Как видите, структура очень проста. Код для вывода курса доллара США на текущий день, например, будет выглядеть вот так:

$date_cbr = date("d/m/Y"); 

$url = "https://www.cbr.ru/scripts/XML_daily.asp?date_req=$date_cbr";
$xml = simplexml_load_file($url);

foreach ($xml as $valute) {
	if ($valute->CharCode == "USD"){
		echo $valute->Value;
	}
}
Все просто: сначала получаем текущую дату в заданном формате, потом, пользуясь встроенным расширением Simple XML в PHP (вроде с пятой версии уже есть) разбираем, проходим по каждой валюте и когда код имеет значение "USD", то выводим курс доллара к рублю.

Котировки акций PHP

Тут все немного сложнее, но тоже не так чтобы уж. Переходим на сайт http://mfd.ru/export и заполняем поля по нужной нам акции. Например, вот так для Северсталь:

http

В итоге у нас скачается файл вот с таким адресом (он нам нужен)

http://mfd.ru/export/handler.ashx/%D0%A1%D0%B5%D0%B2%D0%A1%D1%82_%D0%B0%D0%BE_1hour_07062021_13062021.txt?TickerGroup=16&Tickers=1476&Alias=false&Period=6&timeframeValue=1&timeframeDatePart=day&StartDate=07.06.2021&EndDate=13.06.2021&SaveFormat=0&SaveMode=0&FileName=%D0%A1%D0%B5%D0%B2%D0%A1%D1%82_%D0%B0%D0%BE_1hour_07062021_13062021.txt&FieldSeparator=%253b&DecimalSeparator=.&DateFormat=yyyyMMdd&TimeFormat=HHmmss&DateFormatCustom=&TimeFormatCustom=&AddHeader=true&RecordFormat=2&Fill=false
Формат его такой:

СевСт-ао;60;20210607;090000;1645;256
СевСт-ао;60;20210607;100000;1639.8;184691
СевСт-ао;60;20210607;110000;1644.2;54654
СевСт-ао;60;20210607;120000;1637.2;33613
СевСт-ао;60;20210607;130000;1643;17808
СевСт-ао;60;20210607;140000;1648.6;41354
СевСт-ао;60;20210607;150000;1669.8;224357
СевСт-ао;60;20210607;160000;1675;307872
СевСт-ао;60;20210607;170000;1686.8;238143
СевСт-ао;60;20210607;180000;1685;116862
СевСт-ао;60;20210607;190000;1683;26163
То есть по сути обычный csv – распарсить его также можно встроенными средствами PHP. Код для получения последней актуальной цены одной акции:

$date_end = date("d.m.Y"); 
$date_start = date('m.d.Y', strtotime('-7 day', time()));

$url = "тут_урл_файла";

if (($handle = fopen($url, "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {
            $sever = $data[4];
    }
    fclose($handle);
}

echo $sever;
Здесь опять же вначале мы получаем текущую дату (но немного не в таком формате, как в первом примере – обратите внимание), затем идем на неделю назад – это требуется для того, чтобы точно получить стоимость акции, а то мало ли, на сегодняшний день еще нет, или длинные выходные – в общем, неделя это с запасом.

Дальше скачиваем и читаем файл построчно с разделителем как точка с запятой – и в пятом столбце забираем текущую котировку акции. Вот так просто можно получать курсы валют и акция на для своего сайта.



Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.



тегизаметки, php, парсинг





Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.




Как создать ArrayList в Java
Урок 44. Параметры метода C#


© upread.ru 2013-2021
При перепечатке активная ссылка на сайт обязательна.
Задать вопрос
письмо
Здравствуйте! Вы можете задать мне любой вопрос. Если не получается отправить сообщение через эту форму, то пишите на почу up777up@yandex.ru
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.