Скрипт “Динамика курсов валют”, закачивающий курсы валют (в данной реализации USD и EUR) с сайта ЦБ РФ. Отличительной особенностью данного скрипта является то, что помимо самого курса он предоставляет и информацию об изменении курса с прошлой сессии.
По хорошему, надо дописать к этому скрипту вывод в файл и повесить вызов на cron на 12 и 13 часов каждого дня, чтобы избежать обращения к http://cbr.ru/ при каждой загрузке страницы.
<?php function startElement($parser, $name, $attrs) { global $date, $val, $tag, $code; global $items; $codes = array('R01235', 'R01239'); $tag = $name; switch($name) { case 'VALCURS': if (in_array('DATE',array_keys($attrs))) $date = $attrs['DATE']; break; case 'VALUTE': if (in_array('ID',array_keys($attrs))) if (in_array($attrs['ID'],$codes)) { $code = $attrs['ID']; if (!isset($items[$code])) $items[$code] = array('sign'=>'', 'title' => '', 'value' => '', 'previuos' => ''); $val = 's'; } else $val=''; break; } } function startElement2($parser, $name, $attrs) { global $val, $tag, $code; global $items; $codes = array('R01235', 'R01239'); $tag = $name; if ($name=='VALUTE') { if (in_array('ID',array_keys($attrs))) if (in_array($attrs['ID'],$codes)) { $code = $attrs['ID']; $val = 's'; } else $val=''; } } function endElement($parser, $name) { } function characterData($parser, $data) { global $val, $tag; global $items, $code; if ($val=='s') { switch($tag) { case 'VALUE': $items[$code]['value'] .= str_replace(",",".",$data); break; case 'CHARCODE': $items[$code]['sign'] .= $data; break; case 'NAME': $items[$code]['title'] .= $data; break; } } } function characterData2($parser, $data) { global $val, $tag; global $items, $code; if($val=='s' && $tag=='VALUE') { $items[$code]['previuos'] .= str_replace(",",".",$data); } } function parse($url) { global $items, $date; $items = array(); $current = date('d/m/Y',mktime(0, 0, 0, date("m"), date("d")+1, date("Y"))); parse1($url.$current); $date = str_replace(".","/",$date); list($d,$m,$y)=split("/", $date); $previous = date('d/m/Y',mktime(0, 0, 0, $m , $d-1, $y)); parse2($url.$previous); outData(); } function parse1($url){ global $items; $xml_parser = xml_parser_create(); xml_set_element_handler($xml_parser, "startElement", "endElement"); xml_set_character_data_handler($xml_parser, "characterData"); @$fp = fopen($url, "r"); $data = ""; while (true) { @$datas = fread($fp, 4096); if (strlen($datas) == 0) { break; } $data .= $datas; } @fclose($fp); if ($data != '') { $xmlresult = xml_parse($xml_parser, $data); $xmlerror = xml_error_string(xml_get_error_code($xml_parser)); $xmlcrtline = xml_get_current_line_number($xml_parser); if ($xmlresult) { } else print("Error parsing this feed !<br />Error: $xmlError , at line: $xmlCrtline"); } else { print("Error while retriving feed $url"); } xml_parser_free($xml_parser); } function parse2($url){ global $items; $xml_parser = xml_parser_create(); xml_set_element_handler($xml_parser, "startElement2", "endElement"); xml_set_character_data_handler($xml_parser, "characterData2"); @$fp = fopen($url, "r"); $data = ""; while (true) { @$datas = fread($fp, 4096); if (strlen($datas) == 0) { break; } $data .= $datas; } @fclose($fp); if ($data != '') { $xmlresult = xml_parse($xml_parser, $data); $xmlerror = xml_error_string(xml_get_error_code($xml_parser)); $xmlcrtline = xml_get_current_line_number($xml_parser); if ($xmlresult) { } else print("Error parsing this feed !<br />Error: $xmlError , at line: $xmlCrtline"); } else { print("Error while retriving feed $url"); } xml_parser_free($xml_parser); } function outData() { global $items; global $date; print($date.'<br />'); $values = array_values($items); for($i = 0;$i < count($values);$i++) { print($values[$i]['value']); $change = round($values[$i]['value'] - $values[$i]['previuos'] , 4); print("-- ".$values[$i]['previuos']); print("-- ".$change."<br />"); } } $url="http://www.cbr.ru/scripts/XML_daily.asp?date_req="; parse($url); ?>
Test for trackback and other cool stuffs…
I’ve tried to use trackback technology! It’s only the test entry…
а чисто теоретически возможно его превратить в “динамику курсов акций” на ммвб?
а разве ЦБ предоставляет такую информацию?
ээ.. ну насчет ЦБ пока хз, я вот quote.ru насколько я знаю, точно предоставляет – с опозданием на 15 минут
December poker tournaments in las vegas….
Poker tournaments las vegas. Poker tournaments in phoenix. New orleans harrah casino poker tournaments. Poker tournaments arizona. 2007 poker tournaments in las vegas. Biloxi poker tournaments. Poker tournaments michigan….