Håller på att fixa med en RSS läsare i PHP men den fungerar bra för vissa sidor (http://www.atlasf1.com/rss/news.xml och http://www.grandprix.com/rss.xml t.ex.), men på vissa andra sidor får jag först ett
Undefined offset: 1 in c:\inetpub\wwwroot\rss\test.php on line 73
error men sedan så laddas sidan bra. Detta händer på http://rss.news.yahoo.com/rss/topstories. Här är koden (rad 73 i fet stil)
<?php
header("Content-type:text/plain");
?>
<?php
$file=new GetWebObject("http://rss.news.yahoo.com/rss/topstories",80);
echo $file->get_content();
class GetWebObject
{
var $host="";
var $path="";
var $port=0;
var $header = array();
var $content = "";
function getRequest($url)
{
$url=eregi_replace("http://", "", $url);
return(stristr($url, "/"));
}
function getHost($url)
{
$url=eregi_replace("http://", "", $url);
return(substr($url,0,strpos($url,"/")));
}
function GetWebObject($url, $port)
{
$this->host=$this->getHost($url);
$this->path=$url;
$this->port=$port;
$this->fetch();
}
function fetch()
{
$fp = fsockopen ($this->host, $this->port,$errno,$errstr);
if(!$fp)
{
die("Could not connect to host.");
}
$header_done=false;
$request = "GET ".$this->path." HTTP/1.1\r\n";
$request .= "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)\r\n";
$request .= "Host: ". $this->host ."\r\n";
$request .= "Connection: Close\r\n\r\n";
$return = '';
fputs ($fp, $request);
$line = fgets ($fp, 128);
$this->header["status"] = $line;
while (!feof($fp))
{
$line = fgets ( $fp, 128 );
if($header_done)
{
$this->content .= $line;
}
else
{
if($line == "\r\n")
{
$header_done=true;
}
else
{
$data = explode(": ",$line);
[B] $this->header[$data[0]] = $data[1];[/B]
}
}
}
fclose ($fp);
}
function get_header()
{
return($this->header);
}
function get_content()
{
return($this->content);
}
}
?>
Någon som vet vad det är som går fel och hur man kan fixa det? Om någon tror att den har en bättre funktion för att läsa in en sida i minnet så får ni gärna lägga in den här :)
/Viktor