|
|
|
| Народ! помогите!!
есть проблема такая: мне необходимо вычислить изменения текущего курса валюты относительно предыдущего курса!?
Вот код:
$link = "http://www.cbr.ru/currency_base/D_print.asp?date_req=$date";
$fd=fopen($link, "r");
$text="";
$out="";
if ($fd)
{
while (!feof($fd))$text.=fgets($fd, 4096);
{
fclose($fd);
// Доллар США
preg_match("|Доллар США[^>]*>[^>]*>([\d,\.]*)|i", $text, $out);
echo ("Курс доллара США - ".$out[1]."<br>");
// Евро
preg_match("|Евро[^>]*>[^>]*>([\d,\.]*)|i", $text, $out);
echo ("Курс евро - ".$out[1]."<br>");
}
}
//вычисление курса
$ylink = "http://www.cbr.ru/currency_base/D_print.asp?date_req=$date";
$yfd=fopen($ylink, "r");
$ytext="";
$yout="";
if ($yfd)
{
while (!feof($yfd))$ytext.=fgets($yfd, 4096);
{
fclose($yfd);
// Доллар США
preg_match("|Доллар США[^>]*>[^>]*>([\d,\.]*)|i", $ytext, $yout);
echo ("Курс доллара США - ".$yout[1]."<br>");
// Евро
preg_match("|Евро[^>]*>[^>]*>([\d,\.]*)|i", $ytext, $yout);
echo ("Курс евро - ".$yout[1]);
}
}
|
далее вычисляю изменения:
$izm = ($out[1] - $yout[1]);
echo $izm;
|
Проблема в том, что переменные $out и $yout присутствуют только в каждом из циклов!!
Может как можно их запомнить, а потом посчитать))) ну или сразу в цикле посчитать и вывести))))) | |
|
|
|
|
|
|
|
для: afms
(17.07.2007 в 15:05)
| | Попробуйте так:
<?php
$content = get_content();
// Разбираем содержимое, при помощи регулярных выражений
$pattern = "#<Valute ID=\"([^\"]+)[^>]+>[^>]+>([^<]+)[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>([^<]+)[^>]+>[^>]+>([^<]+)#i";
preg_match_all($pattern, $content, $out, PREG_SET_ORDER);
$dollar = "";
$euro = "";
foreach($out as $cur)
{
if($cur[2] == 840) $dollar = str_replace(",",".",$cur[4]);
if($cur[2] == 978) $euro = str_replace(",",".",$cur[4]);
}
$kurs=substr($dollar, 0,5);
$kurs1=substr($euro, 0,5);
function get_content()
{
// Формируем сегодняшнюю дату
$date = date("d/m/Y");
// Формируем ссылку
$link = "http://www.cbr.ru/scripts/XML_daily.asp?date_req=$date";
// Загружаем HTML-страницу
$fd = fopen($link, "r");
$text="";
// Чтение содержимого файла в переменную $text
while (!feof ($fd)) $text .= fgets($fd, 4096);
// Закрыть открытый файловый дескриптор
fclose ($fd);
return $text;
}
//ВЫЗОВ ДРУГОЙ ДАТЫ
$content = get_contenty();
// Разбираем содержимое, при помощи регулярных выражений
$pattern = "#<Valute ID=\"([^\"]+)[^>]+>[^>]+>([^<]+)[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>[^>]+>([^<]+)[^>]+>[^>]+>([^<]+)#i";
preg_match_all($pattern, $content, $out, PREG_SET_ORDER);
$dollar = "";
$euro = "";
foreach($out as $cur)
{
if($cur[2] == 840) $dollar = str_replace(",",".",$cur[4]);
if($cur[2] == 978) $euro = str_replace(",",".",$cur[4]);
}
$kurs3=substr($dollar, 0,5);
$kurs4=substr($euro, 0,5);
function get_contenty()
{
// Формируем сегодняшнюю дату
$date = date("d/m/Y");
// Формируем ссылку
$link = "http://www.cbr.ru/scripts/XML_daily.asp?date_req=07/04/2007";
// Загружаем HTML-страницу
$fd = fopen($link, "r");
$text="";
// Чтение содержимого файла в переменную $text
while (!feof ($fd)) $text .= fgets($fd, 4096);
// Закрыть открытый файловый дескриптор
fclose ($fd);
return $text;
}
echo "Доллар сегодня ". $kurs;
echo "<br>Евро сегодня ".$kurs1;
echo "<br>Доллар 7 апреля ". $kurs3;
echo "<br>Евро 7 апреля ".$kurs4;
$raznica= $kurs-$kurs3;
echo "<br><br>Разница доллара ".$raznica;
$raznica1= $kurs1-$kurs4;
echo "<br><br>Разница евро ".$raznica1;
?>
|
| |
|
|
|
|
|
|
|
для: Faraon
(17.07.2007 в 17:21)
| | а как в этом скрипте сделать вывод не 2 знаков после запятой, а 4??? | |
|
|
|
|
|
|
|
для: afdm
(17.07.2007 в 18:14)
| | Замените на эти строки:
$kurs=substr($dollar, 0,7);
$kurs1=substr($euro, 0,7);
$kurs3=substr($dollar, 0,7);
$kurs4=substr($euro, 0,7);
|
| |
|
|
|
|
|
|
|
для: Faraon
(18.07.2007 в 08:21)
| | спасибо!!! вроде работает!!!! | |
|
|
|