Парсинг котировок валют

Как то надо было доставать котировки валют с внешнего сайта. Использовал CURL для получения контента и простой xml_parser_create для парсинга информации.

$res = '';

function startElement($parser, $name, $attrs) {
global $res;
switch ($name) {
case 'VALCURS':
$d = mb_convert_encoding(urldecode($attrs['DATE']),'UTF-8', 'windows-1251');
//$dd = $d[0].$d[1].$d[2].$d[3].$d[4];
//$res .= 'Дата: '.$dd.'';
break;
}
}

function endElement($parser, $name) {}

function contents($parser, $data) {
global $res;
$data = mb_convert_encoding($data,'windows-1251','UTF-8');
//$res .= trim($data)."";
}

$ch = curl_init();

//$date = date("d/m/Y");
//$url = "http://www.cbr.ru/scripts/XML_daily.asp?///date_req=".$date;
$url = "http://www.cbr.ru/scripts/XML_daily.asp";

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_PROXYPORT, 0);
curl_setopt($ch, CURLOPT_PROXY, '');

$data = curl_exec($ch);

curl_close($ch);

$XMLparser = xml_parser_create();

xml_set_element_handler($XMLparser, 'startElement', 'endElement');
xml_set_character_data_handler($XMLparser, 'contents');

$xml_array = file($url);

$res .= "".$xml_array[67].": ".$xml_array[70]."";
$res .= "".$xml_array[74].": ".$xml_array[77]."";
print $res;

if (!xml_parse($XMLparser, $data)) {
die('Ошибка обработки данных');
}

xml_parser_free($XMLparser);
?>

Интересная инфа тут: http://parsing-and-i.blogspot.com

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *