И не понял с какой частотой идет обновление инфы в файл.
Сам код. К нему еще прилагается папка downloads в которую и парсится инфо:
CODE:
<?
* Версия: 1.1
* комерческое использование этого скрипта только с разрешения автора
*************************************************************/
function getTodayFileName(){
return 'downloads/kurs_valut_'.date('dmy').'.htm';
}
function getYesterdayFileName(){
return 'downloads/kurs_valut_'.date("dmy",mktime(0,0,0,date("m") ,date("d")-1,date("Y"))).'.htm';
}
function getValKurs(&$val,$date=null){
if($date==null) $date = date("d/m/Y");
$link = "http://www.cbr.ru/scripts/XML_daily.asp?date_req=$date";
// Загружаем HTML-страницу
$fd = fopen($link, "r");
$content="";
if($fd){
// Чтение содержимого файла в переменную $content
while(!feof ($fd)) $content .= fgets($fd, 4096);
} else return;
// Закрыть открытый файловый дескриптор
fclose ($fd);
// Разбираем содержимое, при помощи регулярных выражений
$pattern = "#<Valute ID=\"([^\"]+)[^>]+>[^>]+>([^<]+)[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>([^<]+)[^>]+>[^>]+>([^<]+)#i";
preg_match_all($pattern, $content, $out, PREG_SET_ORDER);
$val['dollar'] = "";
$val['euro'] = "";
foreach($out as $cur){
if($cur[2] == 840) $val['dollar'] = doubleVal(str_replace(",",".",$cur[4]));
if($cur[2] == 978) $val['euro'] = doubleVal(str_replace(",",".",$cur[4]));
}
}
if(!file_exists(getTodayFileName())){
$val_today = array();
$val_yesterday = array();
// получаем курсы валют
getValKurs($val_today);
getValKurs($val_yesterday,date("d/m/Y",mktime(0,0,0,date("m") ,date("d")-1,date("Y"))));
// ставим признак, поднялся курс или нет
$dollar_up = ($val_today['dollar']-$val_yesterday['dollar'] > 0 ? true : false);
$euro_up = ($val_today['euro']-$val_yesterday['euro'] > 0 ? true : false);
tempnam('downloads',getTodayFileName());
$fp = fopen(getTodayFileName(), "w");
// пошел HTML код со вставкой полученных данных курсов валют, имените его как вам необходимо
fwrite($fp,'
<table border="1" cellpadding="5" cellspacing="0">
<tr>
<td colspan="2">Курс валют на '.date('d/m/Y').'</td>
</tr>
<tr>
<td>'.($dollar_up ? 'поднялся' : 'опустился').' <strong>USD</strong> ЦБ РФ </td>
<td align="center"><strong>'.$val_today['dollar'].'</strong></td>
</tr>
<tr>
<td>'.($euro_up ? 'поднялся' : 'опустился').' <strong>EUR</strong> ЦБ РФ </td>
<td align="center"><strong>'.$val_today['euro'].'</strong></td>
</tr>
</table>
');
fclose($fp);
if(file_exists(getYesterdayFileName())) unlink(getYesterdayFileName());
} readfile(getTodayFileName());
?>
<?
* Версия: 1.1
* комерческое использование этого скрипта только с разрешения автора
*************************************************************/
function getTodayFileName(){
return 'downloads/kurs_valut_'.date('dmy').'.htm';
}
function getYesterdayFileName(){
return 'downloads/kurs_valut_'.date("dmy",mktime(0,0,0,date("m") ,date("d")-1,date("Y"))).'.htm';
}
function getValKurs(&$val,$date=null){
if($date==null) $date = date("d/m/Y");
$link = "http://www.cbr.ru/scripts/XML_daily.asp?date_req=$date";
// Загружаем HTML-страницу
$fd = fopen($link, "r");
$content="";
if($fd){
// Чтение содержимого файла в переменную $content
while(!feof ($fd)) $content .= fgets($fd, 4096);
} else return;
// Закрыть открытый файловый дескриптор
fclose ($fd);
// Разбираем содержимое, при помощи регулярных выражений
$pattern = "#<Valute ID=\"([^\"]+)[^>]+>[^>]+>([^<]+)[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>([^<]+)[^>]+>[^>]+>([^<]+)#i";
preg_match_all($pattern, $content, $out, PREG_SET_ORDER);
$val['dollar'] = "";
$val['euro'] = "";
foreach($out as $cur){
if($cur[2] == 840) $val['dollar'] = doubleVal(str_replace(",",".",$cur[4]));
if($cur[2] == 978) $val['euro'] = doubleVal(str_replace(",",".",$cur[4]));
}
}
if(!file_exists(getTodayFileName())){
$val_today = array();
$val_yesterday = array();
// получаем курсы валют
getValKurs($val_today);
getValKurs($val_yesterday,date("d/m/Y",mktime(0,0,0,date("m") ,date("d")-1,date("Y"))));
// ставим признак, поднялся курс или нет
$dollar_up = ($val_today['dollar']-$val_yesterday['dollar'] > 0 ? true : false);
$euro_up = ($val_today['euro']-$val_yesterday['euro'] > 0 ? true : false);
tempnam('downloads',getTodayFileName());
$fp = fopen(getTodayFileName(), "w");
// пошел HTML код со вставкой полученных данных курсов валют, имените его как вам необходимо
fwrite($fp,'
<table border="1" cellpadding="5" cellspacing="0">
<tr>
<td colspan="2">Курс валют на '.date('d/m/Y').'</td>
</tr>
<tr>
<td>'.($dollar_up ? 'поднялся' : 'опустился').' <strong>USD</strong> ЦБ РФ </td>
<td align="center"><strong>'.$val_today['dollar'].'</strong></td>
</tr>
<tr>
<td>'.($euro_up ? 'поднялся' : 'опустился').' <strong>EUR</strong> ЦБ РФ </td>
<td align="center"><strong>'.$val_today['euro'].'</strong></td>
</tr>
</table>
');
fclose($fp);
if(file_exists(getYesterdayFileName())) unlink(getYesterdayFileName());
} readfile(getTodayFileName());
?>
И можно ли сделать подобное с погодой например с гисметео или рамблера, чтобы парсился раз в 4 часа вместе с картинками. и уже вывод инфы шел с сервера сайта.
Во первых это уменьшит нагрузку на сервер, и что не менее важно сэкономит трафик.