/ DATE_RFC2822

PHP解析RSS

class AminoAcid { function AminoAcid ($aa) { foreach ($aa as $k=>$v){ $this->$k = $aa[$k]; } } } function readDatabase($file,$tree,$type) { if($type == 0){ $data = implode("",file($file)); }else{ $data = $file; } $parser = xml_parser_create(); xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0); xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1); xml_parse_into_struct($parser, $data, $values, $tags); xml_parser_free($parser); foreach ($tags as $key=>$val) { if ($key == $tree) { $molranges = $val; for ($i=0; $i < count($molranges); $i+=2) { $offset = $molranges[$i] + 1; $len = $molranges[$i + 1] - $offset; $tdb[] = parseMol(array_slice($values, $offset, $len)); } } else { continue; } } return $tdb; } function parseMol($mvalues) { for ($i=0; $i < count($mvalues); $i++) { $mol[$mvalues[$i]["tag"]] = $mvalues[$i]["value"]; } return new AminoAcid($mol); }

用法是:

$str = file_get_contents("http://leo108.com/feed"); //RSS地址 $db = readDatabase($str,"item",1); foreach($db as $val) { //数据处理 }

其中$val->link是链接,$val->title是标题,$val->description是内容,$val->pubDate是发布时间。

但是发布时间的格式是DATE_RFC2822,例如:Sun, 14 Aug 2005 16:13:03 +0000 , 不利于后期处理,可以使用PHP的strtotime()函数搞定,代码如下:

function TimeParse($dateTime) { date_default_timezone_set("Asia/Shanghai"); return date('Y-m-d H:i:s',strtotime($dateTime)); }

PHP解析RSS
Share this