Хочу поделиться с вами решением проблемы, которая у меня возникла в ходе работы над заказом. Необходимо сделать простой парсер курса доллара и евро на PHP. Подтягивать актуальный курс будем с сайта ЦБ .
Самый простой способ с использованием функции simplexml_load_file.
$file = simplexml_load_file("http://www.cbr.ru/scripts/XML_daily.asp?date_req=".date("d/m/Y")); $xml = $file->xpath("//Valute[@ID='R01235']"); $valute_usd = strval($xml[0]->Value); echo $valute_usd; // получим курс доллара echo '
'; $xml = $file->xpath("//Valute[@ID='R01239']"); $valute_euro = strval($xml[0]->Value); echo $valute_euro; // получим курс евро
Этот способ пригодится для хостингов, у которых отключен allow_url_fopen. В следствии чего возникает ошибка:
Error simplexml_load_file(): wrapper is disabled in the server configuration by allow_url_fopen=0
Можно попросить у хостинга, чтобы они поменяли у себя настройки, но это не всегда возможно, поэтому можно воспользоваться следующим кодом:
$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://www.cbr.ru/scripts/XML_daily.asp?date_req=".date("d/m/Y")); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30); $result = curl_exec($ch); $xml = $result; $xml_obj = new SimpleXMLElement($xml); $xml = $xml_obj->xpath("//Valute[@ID='R01235']"); $curs_usd = strval($xml[0]->Value); // получим курс доллара $xml = $xml_obj->xpath("//Valute[@ID='R01239']"); $curs_euro = strval($xml[0]->Value); // получим курс евро
Можно также немного модифицировать 1 способ и получить массив с валютами на все случаи жизни:
$file = simplexml_load_file("http://www.cbr.ru/scripts/XML_daily.asp?date_req=".date("d/m/Y")); $valutes = array(); foreach ($file AS $el){ $valutes[strval($el->CharCode)] = strval($el->Value); } print_r($valutes);
Купить/заказать парсер под свои нужны
Комментарии ()