Курс валют и котировки акций онлайн на PHP
Понадобилось для одного проекта получать данные о курсе валют относительно рубля и котировки российских акций на текущий момент на своем сайте. Давайте научимся это делать.
Валюты PHP
Для получений курсов валют будем использовать Банк России. Есть такая ссылка
http://www.cbr.ru/scripts/XML_daily.asp?date_req=13/06/2021которая выдает xml с курсами валюты на заданный день. Можно пройти по ссылке и посмотреть в браузере:
Как видите, структура очень проста. Код для вывода курса доллара США на текущий день, например, будет выглядеть вот так:
$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://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 - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.