Взимане на информация, запазване във файл и после сравняване

Fakeheal

Super Moderator
Значи имам ето този код
Код:
<table width="400" border="0" align="center" cellpadding="0" cellspacing="0">
          <tr>
            <td bgcolor="white"><table border="0" cellpadding="3" cellspacing="1" bordercolor="#CCCCCC" >
              <tr>
                <th height="30" align="center" valign="middle" > </th>
                <th align="left" valign="middle" ><strong>Валути</strong></th>
                <th align="center" valign="middle" ><strong>Код</strong></th>
                <th align="center" valign="middle" ><strong>За</strong></th>
                <th align="left" valign="middle" ><strong>Лева (</strong><strong>BGN</strong><strong>)</strong></th>
              </tr>
              <tr bgcolor="#FFFFFF" class="black" onMouseOver="this.style.backgroundColor='#EBEBEB'" onMouseOut="this.style.backgroundColor=''">
                <th width="55" height="30" align="center" valign="middle" bgcolor="#FFFFFF"><img src="http://bomargroup.com/templates/img/usa_flag.png" width="30" height="23" /></th>
                <td width="190" align="left" valign="middle" >Щатски долар</td>
                <td width="55" align="center" valign="middle" >USD</td>
                <td width="100" align="center" valign="middle" >1</td>
                <td width="200" align="left" valign="middle" >          
                <?php

function currency($currency, $site){
preg_match("/".$currency."(.*?)(([0-9]+)\.([0-9]+))/", $site, $matches);
return isset( $matches[2] )?(float)$matches[2]:0;
}
$bnb = @file_get_contents('http://www.pariteni.bg/?tid=20&oid=260');
$usd = currency("USD", $bnb);
echo $usd;
?>

</td>
              </tr>
              <tr bgcolor="#FFFFFF" class="black" onMouseOver="this.style.backgroundColor='#EBEBEB'" onMouseOut="this.style.backgroundColor=''">
                <th height="30" align="center" valign="middle" bgcolor="#FFFFFF"><img src="http://bomargroup.com/templates/img/euro_flag.png" width="30" height="23" /></th>
                <td align="left" valign="middle" >Евро</td>
                <td align="center" valign="middle" >EUR</td>
                <td align="center" valign="middle" >1</td>
                <td align="left" valign="middle" >1.95583</td>
              </tr>
              <tr bgcolor="#FFFFFF" class="black" onMouseOver="this.style.backgroundColor='#EBEBEB'" onMouseOut="this.style.backgroundColor=''">
                <th height="30" align="center" valign="middle" bgcolor="#FFFFFF"><img src="http://bomargroup.com/templates/img/english_flag.png" width="30" height="23" /></th>
                <td align="left" valign="middle">Британска лира</td>
                <td align="center" valign="middle">GBP</td>
                <td align="center" valign="middle">1</td>
                <td align="left" valign="middle"><?php
$gbr = currency("GBP", $bnb);
echo $gbr;
?></td>
              </tr>
              <tr bgcolor="#FFFFFF" class="black" onMouseOver="this.style.backgroundColor='#EBEBEB'" onMouseOut="this.style.backgroundColor=''">
                <th height="15" align="center" valign="middle" bgcolor="#FFFFFF"><img src="http://bomargroup.com/templates/img/switzerland_flag.png" width="30" height="23" /></th>
                <td align="left" valign="middle">Швейцарски франк</td>
                <td align="center" valign="middle">CHF</td>
                <td align="center" valign="middle">1</td>
                <td align="left" valign="middle"><?php
$chf = currency("CHF", $bnb);
echo $chf;
?></td>
              </tr>
            </table></td>
          </tr>
        </table>

и искам самата информация за валутните курсове да се записва в някакъв отделен файл всеки ден и от там нататък да не се зарежда от сайта pariteni.bg (не е реклама), ами да се взима информацията от самия файл (за да не натоварва трафика на гореспоменатия сайт). Също така, ако може да се направи така, че да се сравняват стойностите от предния ден (но това не е толкова важно. )
 
Виж това дали ще ти свърши работа :

Правиш го като отделен файл и го вмъкваш (include "thisfilename.php"; )

<?php

$filename = "path/to/file/currency.php";

$RefreshPeriod = 3600; //In seconds

if (time() - @filemtime($filename) > $RefreshPeriod)
{

$content = array();

/*

Your code here ....


$content[]="One line of content ...";

*/

$handle = fopen($filename, 'w');

foreach ($content as $line)
{

fwrite($handle, $line);

}

fclose($handle);

}

include $filename;

?>
 
Хич ме няма в това php, би ли ми обяснил по-подробно как да го направя. Значи разбрах, че това трябва да го запиша в някакъв файл и да си го сложа в моя сайт чрез include. Но какво ще рече това "Your code here.." :D Моля те,дай повече обяснения :S
 
Това което искаш се нарича Screen Scraping и се прави горе долу лесно чрез използване на функцията cURL();

Сега нямам време да ти го направя, но може да погледнеш това:

http://www.developertutorials.com/tutorials/php/scraping-links-with-php-8-01-05-958/
 
На мястото на това:

--------------------------------
function currency($currency, $site){
preg_match("/".$currency."(.*?)(([0-9]+)\.([0-9]+))/", $site, $matches);
return isset( $matches[2] )?(float)$matches[2]:0;
}
$bnb = @file_get_contents('http://www.pariteni.bg/?tid=20&oid=260');
$usd = currency("USD", $bnb);
echo $usd;
--------------------------------

напиши:

include "currency_cashe.php";


и напрви нов файл с име currency_cashe.php и следното съдържание:

<?php

function currency($currency, $site)
{
preg_match("/" . $currency . "(.*?)(([0-9]+)\.([0-9]+))/", $site, $matches);
return isset($matches[2]) ? $currency." : ".(float)$matches[2]:0;
}

$filename = "currency.php"; // име на файла където се съхранява информацията

$RefreshPeriod = 3600; //След колко време да се обновява информацията (в секунди)

if (time() - @filemtime($filename) > $RefreshPeriod)
{

$content = array();

$bnb = @file_get_contents('http://www.pariteni.bg/?tid=20&oid=260');


$content[] = currency("USD", $bnb). "<br/>";
$content[] = currency("EUR", $bnb). "<br/>";

//За които валути искаш

$handle = fopen($filename, 'w');

foreach ($content as $line)
{

fwrite($handle, $line);

}

fclose($handle);

}

include $filename;

?>
 

Back
Горе