由于需要读取不同来源的rss feed,写了一个php程序来循环读取rss feed,为了方便阅读及了解程序实现过程,加上了注释,和大家共同学习。
而助易网的rss读取就是在这个程序的基础上稍做改造而成,主 要是输出了一个数组字符串以及解决编码问题。 php源代码及代码详细解释如下: <?php //RSS源地址列表数组 $rssfeed = array("http://www.aspzz.cn/feed", "http://rss.sina.com.cn/news/allnews/sports.xml", "http://ent.163.com/special/00031K7Q/rss_toutiao.xml", "http://tech.163.com/special/00091JPQ/techimportant.xml"); //设置编码为UTF-8 header('Content-Type:text/html;charset= UTF-8');????? for($i=0;$i<sizeof($rssfeed);$i++){//分解开始 ??? $buff = ""; ??? $rss_str=""; ??? //打开rss地址,并读取,读取失败则中止 ??? $fp = fopen($rssfeed[$i],"r") or die("can not open $rssfeed");? ??? while ( !feof($fp) ) { ??????? $buff .= fgets($fp,4096); ??? } ??? //关闭文件打开 ??? fclose($fp); ??? //建立一个 XML 解析器 ??? $parser = xml_parser_create(); ??? //xml_parser_set_option -- 为指定 XML 解析进行选项设置 ??? xml_parser_set_option($parser,XML_OPTION_SKIP_WHITE,1); ??? //xml_parse_into_struct -- 将 XML 数据解析到数组$values中 ??? xml_parse_into_struct($parser,$buff,$values,$idx); ??? //xml_parser_free -- 释放指定的 XML 解析器 ??? xml_parser_free($parser); ??? foreach ($values as $val) { ??????? $tag = $val["tag"]; ??????? $type = $val["type"]; ??????? $value = $val["value"]; ??????? //标签统一转为小写 ??????? $tag = strtolower($tag); ??????? if ($tag == "item" && $type == "open"){ ??????????? $is_item = 1; ??????? }else if ($tag == "item" && $type == "close") { ??????????? //构造输出字符串 ??????????? $rss_str .= "<a href='".$link."' target=_blank>".$title."</a><br />"; ??????????? $is_item = 0; ??????? } ??????? //仅读取item标签中的内容 ??????? if($is_item==1){ ??????????? if ($tag == "title") {$title = $value;}???????? ??????????? if ($tag == "link") {$link = $value;} ??????? } ??? } ??? //输出结果 ??? echo $rss_str."<br />"; } ?> 原文:http://www.aspzz.cn/article/15343.htm
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|