Красавчег
Завсегдатай
- Регистрация
- 15 Мар 2010
- Сообщения
- 906
- Реакции
- 313
- Автор темы
- #1
Нашел давеча неплохой скрипт информера курсов валюты.
Помогите сделать, чтобы запуская кроном раз в сутки этот скрипт, он сохранял/перезаписывал результат своей работы в файл, например kurs.html
Чтобы потом этот файл kurs.html можно было выводить/подключать к другим страницам сайта.
Помогите сделать, чтобы запуская кроном раз в сутки этот скрипт, он сохранял/перезаписывал результат своей работы в файл, например kurs.html
Чтобы потом этот файл kurs.html можно было выводить/подключать к другим страницам сайта.
PHP:
<?
/************
* getCourseDynamic()
* Получение курса валют
* $currency - массив с кодами валют
* возвращает массив со значениями курсов заданных валют,
* динамикой и разницой изменения курса по сравнению со вчерашним днем
* [course] => курс валюты
* [nominal] => номинал
* [spread] => разница курсов
* коды валют можно найти здесь: http://www.cbr.ru/scripts/XML_val.asp?d=0
* Например:
* Доллар США - R01235
* Евро - R01239
* Фунт стерлингов - R01035
*************/
function getCourse($currency = array('R01235','R01239'),$shift = 0){
$value = array();
$td = mktime(0,0,0,date('m'),intval(date('d'))+$shift,date('Y'));
$ystd = mktime(0,0,0,date('m'),intval(date('d'))+$shift-1,date('Y'));
foreach($currency as $cur){
$url = 'http://www.cbr.ru/scripts/XML_dynamic.asp?date_req1='.date('d/m/Y',$ystd).'&date_req2='.date('d/m/Y',$td).'&VAL_NM_RQ='.$cur;
$xml = DOMDocument::loadXML(file_get_contents($url));
if(!$xml) return null;
$y =
$t = 0;
$nominal = 1;
$xpc = new DOMXPath($xml);
if($xpc->evaluate('count(//Record)')<2 && abs($shift)<10){
return getCourse($currency,$shift-1);
}
$res = $xpc->query('/ValCurs/Record[@Date="'.date('d.m.Y',$ystd).'"]/Value/text()');
if($res->length) $y = floatval(str_replace(',','.',$res->item(0)->data));
$res = $xpc->query('/ValCurs/Record[@Date="'.date('d.m.Y',$td).'"]/Value/text()');
if($res->length) $t = floatval(str_replace(',','.',$res->item(0)->data));
$res = $xpc->query('/ValCurs/Record[@Date="'.date('d.m.Y',$td).'"]/Nominal/text()');
if($res->length) $nominal = floatval(str_replace(',','.',$res->item(0)->data));
$value[$cur]['date'] = $td;
$value[$cur]['course'] = $t;
$value[$cur]['nominal'] = $nominal;
$value[$cur]['spread'] = $t-$y;
}
return $value;
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Информер курса валют - pgood.ru</title>
<style type="text/css">
table{
font:12px Arial, Helvetica, sans-serif;
color:#333;
}
table td,th{
padding:5px;
text-align:left;
}
</style>
</head>
<body>
<?
$val = array(
'R01235' => 'Доллар США',
'R01239' => 'Евро'
);
$cur = getCourse(array_flip($val));
?>
<table border="0" cellspacing="0" cellpadding="5">
<tr>
<td> </td>
<th colspan="3">Курс валют на <?=date('d.m.Y',$cur['R01235']['date'])?></th>
</tr>
<?
foreach($val as $i => $cur_name){
$color = $cur[$i]['spread']>=0 ? '00CC00' : 'FF0000'; //красный, если понизился, зеленый, если повысился
$spread = number_format($cur[$i]['spread']*100,0,',',''); //разницу в курсах переводим в копейки
$course = number_format($cur[$i]['course'],4,',',' '); //текущий курс
?>
<tr>
<td style="background:#<?=$color?>;"> </td>
<th><?=$cur_name?></th>
<td style="color:#999;"><?=$cur[$i]['spread']>=0 ? '+' : ''?><?=$spread?> коп.</td>
<td><strong><?=$course?></strong> руб.</td>
</tr>
<?
}
?>
</table>
</body>
</html>