Курс валют и котировки акций онлайн на 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, парсинг




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




Async и Defer — стратегии загрузки JavaScript
Случайный тест английский
Урок 4. Числовые литералы в C#