PHP 读RSS

 直接运行就OK了。

RSS.CLASS.PHP

<?php
class ReadRSS
{
 
//Define var as ReadRSS Class property
    var $url;
    
var $content;
    
var $values;

    
//Define construct function
    function ReadRSS($url)
 {
        
$this->url=$url;
    }

 
//This is the Function to get file content.(read file)
    function ReadFile()
 {
        
$fp = fopen($this->url,"r");
        
while ( !feof($fp) )
  {
            
$this->content .= fgets($fp,4096);
        }
        
fclose($fp);
    }

 
//Read Xml File
    function ReadXML(){
        
$parser = xml_parser_create();//简历xml解析器
        xml_parser_set_option($parser,XML_OPTION_SKIP_WHITE,1);//忽略由空白字符组成的值
        xml_parser_set_option($parser,XML_OPTION_TARGET_ENCODING,'UTF-8');
//设置编码,目前只支持ISO-8859-1、US-ASCII 和 UTF-8,也可以不设置,与目标编码一致
        xml_parse_into_struct($parser,$this->content,$this->values);
        
xml_parser_free($parser);
    }


    
function RSS($n=10){
        
$this->ReadFile();
        
$this->ReadXML();
        
$in_item = 0;
        
$i=0;
        
$read=array();
        
foreach ($this->values as $value) {
            
$tag = $value["tag"];
            
$type = $value["type"];
            
$value = $value["value"];
            
$tag = strtolower($tag);
            
if ($tag == "item" && $type == "open") {
                
$in_item = 1;
            } 
else if ($tag == "item" && $type == "close"){
                
$read[$i]['link']=$link;
                
$read[$i]['title']=$title;
                
if ($pubDate) {
                    
$read[$i]['pubDate']=$pubDate;
                }
                
$read[$i]['description']=$description;
                
$in_item = 0;
                   
$i++;
                
if ($i>=$n) {
                    
break;
                }
            }
            
if ($in_item) {
                
switch ($tag) {
                    
case "title":
                        
$title = $value;
                        
break;
                    
case "link":
                        
$link = $value;
                        
break;
                    
case "pubDate":
                        
$pubDate = $value;
                        
break;
                    
case "description":
                        
$description = $value;
                        
break;
                }
            }
        }
        
return $read;
    }
}
?>


RSS.PHP
<html>
<head>
<meta http-equiv='content-type' content='text/html; charset=UTF-8'>
    
<title>RSS_TEST</title>
</head>
<body>
<?php
include_once('rss.class.php');
$url="http://dudu.cnblogs.com/rss.aspx";
$rss=new ReadRSS($url);
$values=$rss->RSS(10);
foreach ($values as $value) {
    
echo "<div><a href={$value['link']}>{$value['title']}</a></div>";
}
?>

</body>
</html>
原文地址:https://www.cnblogs.com/lang/p/995384.html