Ще ви предоставя свой код, писан на PHP, чрез който прихващам курсовете на БНБ, парсвам ги и ги разпечатвам в страница. Получаването на информацията постигам чрез отваряне на сокет към сървъра на БНБ, на който е качена тяхната страница. Преимуществото е, че информацията се доставя на всеки, заредил страницата в момента на зареждане (в реално време), т.е. няма кеширане. Ето и кода:
Първо си описваме няколко функции за манипулиране на получената информация:
function replaceAHREF($str) //премахва всички линкове към валутните курсове на други банки
{
$str=strtoupper($str);
while(strpos($str,'<A HREF=')>0)
{
$start=strpos($str,'<A HREF=');
$end=strpos($str,'>',$start+1);
$str=substr_replace($str,'',$start,$end-$start+1);
$start=strpos($str,'</A>');
$str=substr_replace($str,'',$start,4);
}
return $str;
}
function replaceScript($str) //премахва всички скриптове от оригиналната страница
{
$str=strtoupper($str);
while(strpos($str,'<SCRIPT')>0)
{
$start=strpos($str,'<SCRIPT');
$end=strpos($str,'</SCRIPT>');
$str=substr_replace($str,'',$start,$end-$start+10);
}
return $str;
}
function replaceHeader($str) //премахва хедъра на оригиналната страница
{
$str=strtoupper($str);
$start=strpos($str,'<HEAD>');
$end=strpos($str,'</HEAD>');
$str=substr_replace($str,'',$start,$end-$start+8);
return $str;
}
function replaceBody($str) //премахва таговете <body>
{
$str=strtoupper($str);
$start=strpos($str,'<BODY');
$end=strpos($str,'>',$start+1);
$str=substr_replace($str,'',$start,$end-$start+1);
$start=strpos($str,'</BODY>');
$str=substr_replace($str,'',$start,7);
return $str;
}
function fetchURL( $url ) //върши истинската работа - отваря сокет и точи оригиналната страница
{
$url_parsed = parse_url($url);
$host = $url_parsed["host"];
$port = $url_parsed["port"];
if ($port==0)
{
$port = 80;
}
$path = $url_parsed["path"];
if ($url_parsed["query"] != "")
{
$path .= "?".$url_parsed["query"];
}
$out = "GET $path HTTP/1.0\r\nHost: $host\r\n\r\n";
$fp = fsockopen($host, $port, $errno, $errstr, 30);
fwrite($fp, $out);
$body = false;
while (!feof($fp))
{
$s = fgets($fp, 1024);
if($body)
{
$in .= $s;
}
if($s=="\r\n")
{
$body = true;
}
}
fclose($fp);
return $in;
}
//а ето и как се използват:
$str=fetchURL('http://www.bnb.bg/bnb/rates.nsf/vWebRatesByMonthBG/$First');
$str=replaceAHREF($str);
$str=replaceScript($str);
$str=replaceHeader($str);
$str=replaceBody($str);
print($str);
Ами това е. Надявам се да съм ви бил от полза. Езикът не е от значение. Просто аз ползвам PHP.