当前位置:编程问答 > php >

RSS订阅制作手动自作和PHP自动生成XML

PHP动态网页自动生成RSS代码

用PHP自动生成RSS,已经调试过了,可以使用……

<?php

if (defined('_CLASS_RSS_PHP')) return;
define('_CLASS_RSS_PHP',1);

class RSS {
   //public
   var $rss_ver = "2.0";
   var $channel_title = '';
   var $channel_link = '';
   var $channel_description = '';
   var $language = 'zh_CN';
   var $copyright = '';
   var $webMaster = '';
   var $pubDate = '';
   var $lastBuildDate = '';
   var $generator = 'RedFox RSS Generator';

   var $content = '';
   var $items = array();

  
   // 函数名: RSS
   // 功能: 构造函数
   // 参数: $title
   // $link
   // $description
  
   function RSS($title, $link, $description) {
       $this->channel_title = $title;
       $this->channel_link = $link;
       $this->channel_description = $description;
       $this->pubDate = Date('Y-m-d H:i:s',time());
       $this->lastBuildDate = Date('Y-m-d H:i:s',time());
   }
  
   // 函数名: AddItem
   // 功能: 添加一个节点
   // 参数: $title
   // $link
   // $description  $pubDate
  
   function AddItem($title, $link, $description ,$pubDate) {
       $this->items[] = array('title' => $title ,
                        'link' => $link,
                        'description' => $description,
                        'pubDate' => $pubDate);
   }
  
   // 函数名: BuildRSS
   // 功能: 生成rss xml文件内容
  
   function BuildRSS() {
       $s = "<?xml version='1.0' encoding='utf-8'?>
       \n<rss version=\"2.0\">\n";
       // start channel
       $s .= "<channel>\n";
       $s .= "<title><![CDATA[{$this->channel_title}]]></title>\n";
       $s .= "<link><![CDATA[{$this->channel_link}]]></link>\n";
       $s .= "<description><![CDATA[{$this->channel_description}]]></description>\n";
       $s .= "<language>{$this->language}</language>\n";
       if (!empty($this->copyright)) {
          $s .= "<copyright><![CDATA[{$this->copyright}]]></copyright>\n";
       }
       if (!empty($this->webMaster)) {
          $s .= "<webMaster><![CDATA[{$this->webMaster}]]></webMaster>\n";
       }
       if (!empty($this->pubDate)) {
          $s .= "<pubDate>{$this->pubDate}</pubDate>\n";
       }

       if (!empty($this->lastBuildDate)) {
          $s .= "<lastBuildDate>{$this->lastBuildDate}</lastBuildDate>\n";
       }

       if (!empty($this->generator)) {
          $s .= "<generator>{$this->generator}</generator>\n";
       }
       // start items
       for ($i=0;$i<count($this->items);$i++) {
           $s .= "<item>\n";
           $s .= "<title><![CDATA[{$this->items[$i]['title']}]]></title>\n";
           $s .= "<link><![CDATA[{$this->items[$i]['link']}]]></link>\n";
           $s .= "<description><![CDATA[{$this->items[$i]['description']}]]></description>\n";
           $s .= "<pubDate>{$this->items[$i]['pubDate']}</pubDate>\n";          
           $s .= "</item>\n";
       }
      // close channel
      $s .= "</channel>\n</rss>";
      $this->content = $s;
   }
  
   // 函数名: Show
   // 功能: 将产生的rss内容直接打印输出
  
   function Show() {
       if (empty($this->content)) $this->BuildRSS();
       echo($this->content);
   }
  
   // 函数名: SaveToFile
   // 功能: 将产生的rss内容保存到文件
   // 参数: $fname 要保存的文件名
  
   function SaveToFile($fname) {
       $handle = fopen($fname, 'wb');
       if ($handle === false)  return false;
       fwrite($handle, $this->content);
       fclose($handle);
   }
}
?>

feed.php代码:

<?php
    require_once('RSS.php');
    require_once('conn/connect.inc');
    function changUTF($con){
        $con = iconv("gb2312","utf-8",$con);
        return  $con;
    }
    $myRss = new RSS("购房者杂志网","http://www.zzzyk.com","站长资源库);
    //$myRss->RSS();
    $sql = "select ID,m_name,m_num,m_class,m_intro,m_time from m_property";
    $result = mysql_query($sql, $connection);
    while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
                $sql1 = "select tag_con from m_tag where m_id=".$row['ID'];
                $result1 = mysql_query($sql1,$connection);
                while ($row1 = mysql_fetch_array($result1, MYSQL_ASSOC)) {
                    $tag = $tag." ".$row['tag_con'];
                }
                $myRss->AddItem(changUTF($row['m_name'].$row['m_num']),'http://www.zzzyk.com/show/'.$row['ID'].'.htm',changUTF($row1['$tag'].$row['m_intro']),$row['m_time']);
            }
    $myRss->BuildRSS();
    $myRss->SaveToFile('feed.rss');
?>

    在浏览天极RSS订阅页面时,可以看到天极网为方便用户定制站点内容而设立的各个RSS频道。浏览者通过订阅不同的RSS(可同时订阅多个网站),就能在不登录网站的情况下获得及时的新闻信息,还可以避免网页上无用的广告和垃圾信息的干扰。使用RSS会为浏览者节省大量的时间,也会成为体现网站人性化设计的一个亮点,提升了网站的档次。

其实RSS技术并不太难,如果你的网站信息量较大,完全可以把这一技术运用到自己的站点中来。

 

小知识:什么是RSS

RSS是站点与站点之间共享内容的一种简易方式(也称为“聚合内容”),通常被用于新闻和其他按顺序排列的网站,例如Blog网站。网站提供RSS输出,有利于让用户发现网站内容的更新。网站用户可以在客户端借助于类似新闻资讯阅读器等支持RSS的新闻聚合工具软件,在不打开网站内容页面的情况下阅读支持RSS输出的网站内容。新闻资讯阅读器的使用方法可以参考2004年《电脑报》第36期G5版《新闻快餐,尽在RSS》。

一、知己知彼,百战不殆

要想为网站创建RSS,首先我们必须对RSS进行深入的了解。RSS是基于XML(可扩展标志语言)的一种形式,并且所有的RSS文件都要遵守万维网联盟(W3C)站点发布的XML 1.0规范。一般来说,RSS文档的最顶层是一个< rss >元素作为根元素,< rss >元素有一个强制属性version,用于指定当前RSS文档的版本,目前常用的RSS版本是2.0。< rss >元素下的子元素是唯一的一个< channel >元素,它包含了关于该网站或栏目的信息和内容,在下必备的语句有三个:

< title >:网站或栏目的名称,一般与网站或栏目的页面title一致;
< link >:网站或栏目的URL;
< description >:对网站或栏目的简要描述。

还可以使用一些如< language >(语言)、< copyright >(版权声明)等可选语句来丰富< channel >内容,具体的新闻提要就要依靠来体现了。一般一条新闻就是一个< item >,< item >下至少要存在一个< title >或< description >,其他语句可以根据需要进行选择。


二、RSS,手工造

了解了RSS具体的语句结构和用法后,我们就可以按照以下格式在最常用的记事本或网页编辑软件中手工编辑网站的RSS了。

<?xml version=“1.0” encoding=“gb2312”?>
<!return_edit>  <rss version=“2.0”>
<!return_edit>  <channel>
<!return_edit>  <title>网站或栏目的名称</title>
<!return_edit>  <link>网站或栏目的URL地址</link>
<!return_edit>  <description>网站或栏目的简要介绍</description>
<!return_edit>  <item>
<!return_edit>  <title>新闻标题</title>
<!return_edit>  <link>新闻的链接地址</link>
<!return_edit>  <description>新闻简要介绍</description>
<!return_edit>  <pubDate>新闻发布时间</pubDate>
<!return_edit>  <author>新闻作者名称</author>
<!return_edit>  </item>
<!return_edit>  <item>
<!return_edit>  ……
<!return_edit>  </item>
<!return_edit>  </channel>
<!return_edit>  </rss>


CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,