最近在弄博客,但各种博客间同步6来源gaodaimacom搞#^代%!码网搞gaodaima代码比较麻烦,好在每一个博客都有自己的RSS聚合系统,可以通过RSS实现博客同步调用,于是自己动手用RSS实现博客同步发布,在其中就研究一下PHP读RSS。
RSS是用XML来书写的,XML 是一种数据存储格式。PHP读取XML数据有三种方法:用XML解析函数、DOM模块和正则表达式,最直接地就是直接解析XML,获取XML中的数据。
以下是解析代码:
<?php<BR>error_reporting(E_ALL^E_NOTICE);</P><P>$rssfeed = "feed.xml";<BR>header('Content-Type:text/html;charset= UTF-8');</P><P>$buff = "";<BR> //打开rss地址,并读取<BR> $fp = fopen($rssfeed,"r") or die("can not open $rssfeed");<BR> while ( !feof($fp) ) {<BR> $buff .= fgets($fp,4096);<BR> }<BR> //关闭文件<BR> fclose($fp);</P><P>//建立一个 XML 解析器<BR> $parser = xml_parser_create();<BR> //xml_parser_set_option -- 为指定 XML 解析进行选项设置<BR> xml_parser_set_option($parser,XML_OPTION_SKIP_WHITE,1);<BR> //xml_parse_into_struct -- 将 XML 数据解析到数组$values中<BR> xml_parse_into_struct($parser,$buff,$values,$idx);<BR> //xml_parser_free -- 释放指定的 XML 解析器<BR> xml_parser_free($parser);</P><P>foreach ($values as $val) {<BR> $tag = $val["tag"];<BR> $type = $val["type"];<BR> $value = $val["value"];<BR> //标签统一转为小写<BR> $tag = strtolower($tag);</P><P>if ($tag == "item" && $type == "open"){<BR> $is_item = 1;<BR> }else if ($tag == "item" && $type == "close") {<BR> //构造输出字符串<BR> echo "".$title."<BR> ";<BR> //echo $content."<BR> ";<BR> $is_item = 0;<BR> }<BR> //仅读取item标签中的内容<BR> if($is_item==1){<BR> if ($tag == "title") {$title = $value;}<BR> if ($tag == "link") {$link = $value;}<BR> if ($tag =="content:encoded"){$content=$value;}<BR> }<BR> }<BR> ?><BR>
以下是用该程序读取feed的效果: