• 专注于网站建设,网络推广,关键词优化,SEO优化,专业的网站建设开发团队!
首页 > IT技术 > PHP > 内容

ThinkPHP中RSS类的运用

2015-06-11 22:18:51   来源:叶景网络
    也许大家是第一次听到RSS这个概念,那什么是RSS呢?RSS是站点用来和其他站点之间共享内容的一种简易方式(也叫聚合内容),通常被用于新闻和其他按顺序排列的网站,例如Blog。一段项目的介绍可能包含新闻的全部介绍等。或者仅仅是额外的内容或者简短的介绍。这些项目的链接通常都能链接到全部的内容。网络用户可以在客户端借助于支持RSS的新闻聚合工具软件,在不打开网站内容页面的情况下阅读支持RSS输出的网站内容。
    说得更加简单一点,RSS就是一种用来分发和汇集网页内容的XML格式!如果你还是不太明白,没有关系,RSS是什么其实基本就不重要,重要的是RSS可以做什么
    RSS的作用,就是帮助用户快速筛选获取网站最新更新的自己喜欢的内容,节省了到网站去搜寻的时间。似乎博客总是少不了RSS,下面分享一个RSS类:
    完整的代码:
    <?php 
    /** 
    +------------------------------------------------------------------------------ 
    * RSS生成类 
    +------------------------------------------------------------------------------ 
    * @author    yhustc <yhustc@gmail.com> 
    * @version   $Id$ 
    +------------------------------------------------------------------------------ 
    */
    class RSS 
    { 
    /** 
    +---------------------------------------------------------- 
    * RSS频道名 
    +---------------------------------------------------------- 
    * @var string 
    * @access protected 
    +---------------------------------------------------------- 
    */
    protected $channel_title = ''; 
    /** 
    +---------------------------------------------------------- 
    * RSS频道链接 
    +---------------------------------------------------------- 
    * @var string 
    * @access protected 
    +---------------------------------------------------------- 
    */
    protected $channel_link = ''; 
    /** 
    +---------------------------------------------------------- 
    * RSS频道描述 
    +---------------------------------------------------------- 
    * @var string 
    * @access protected 
    +---------------------------------------------------------- 
    */
    protected $channel_description = ''; 
    /** 
    +---------------------------------------------------------- 
    * RSS频道使用的小图标的URL 
    +---------------------------------------------------------- 
    * @var string 
    * @access protected 
    +---------------------------------------------------------- 
    */
    protected $channel_imgurl = ''; 
    /** 
    +---------------------------------------------------------- 
    * RSS频道所使用的语言 
    +---------------------------------------------------------- 
    * @var string 
    * @access protected 
    +---------------------------------------------------------- 
    */
    protected $language = 'zh_CN'; 
    /** 
    +---------------------------------------------------------- 
    * RSS文档创建日期,默认为今天 
    +---------------------------------------------------------- 
    * @var string 
    * @access protected 
    +---------------------------------------------------------- 
    */
    protected $pubDate = ''; 
    protected $lastBuildDate = ''; 
    protected $generator = 'YBlog RSS Generator'; 
    /** 
    +---------------------------------------------------------- 
    * RSS单条信息的数组 
    +---------------------------------------------------------- 
    * @var string 
    * @access protected 
    +---------------------------------------------------------- 
    */
    protected $items = array(); 
    /** 
    +---------------------------------------------------------- 
    * 构造函数 
    +---------------------------------------------------------- 
    * @access public  
    +---------------------------------------------------------- 
    * @param string $title  RSS频道名 
    * @param string $link  RSS频道链接 
    * @param string $description  RSS频道描述 
    * @param string $imgurl  RSS频道图标 
    +---------------------------------------------------------- 
    */
    public function __construct($title, $link, $description, $imgurl = '') 
    { 
    $this->channel_title = $title; 
    $this->channel_link = $link; 
    $this->channel_description = $description; 
    $this->channel_imgurl = $imgurl; 
    $this->pubDate = Date('Y-m-d H:i:s', time()); 
    $this->lastBuildDate = Date('Y-m-d H:i:s', time()); 
    } 
    /** 
    +---------------------------------------------------------- 
    * 设置私有变量 
    +---------------------------------------------------------- 
    * @access public  
    +---------------------------------------------------------- 
    * @param string $key  变量名 
    * @param string $value  变量的值 
    +---------------------------------------------------------- 
    */
    public function Config($key,$value) 
    { 
    $this->{$key} = $value; 
    } 
    /** 
    +---------------------------------------------------------- 
    * 添加RSS项 
    +---------------------------------------------------------- 
    * @access public  
    +---------------------------------------------------------- 
    * @param string $title  日志的标题 
    * @param string $link  日志的链接 
    * @param string $description  日志的摘要 
    * @param string $pubDate  日志的发布日期 
    +---------------------------------------------------------- 
    */
    function AddItem($title, $link, $description, $pubDate) 
    { 
    $this->items[] = array('title' => $title, 'link' => $link, 'description' => $description, 'pubDate' => $pubDate); 
    } 
    /** 
    +---------------------------------------------------------- 
    * 输出RSS的XML为字符串 
    +---------------------------------------------------------- 
    * @access public  
    +---------------------------------------------------------- 
    * @return string 
    +---------------------------------------------------------- 
    */
    public function Fetch() 
    { 
    $rss = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\r\n"; 
    $rss = "<rss version=\"2.0\">\r\n"; 
    $rss .= "<channel>\r\n"; 
    $rss .= "<title><![CDATA[{$this->channel_title}]]></title>\r\n"; 
    $rss .= "<description><![CDATA[{$this->channel_description}]]></description>\r\n"; 
    $rss .= "<link>{$this->channel_link}</link>\r\n"; 
    $rss .= "<language>{$this->language}</language>\r\n"; 
    if (!empty($this->pubDate)) 
    $rss .= "<pubDate>{$this->pubDate}</pubDate>\r\n"; 
    if (!empty($this->lastBuildDate)) 
    $rss .= "<lastBuildDate>{$this->lastBuildDate}</lastBuildDate>\r\n"; 
    if (!empty($this->generator)) 
    $rss .= "<generator>{$this->generator}</generator>\r\n"; 
    $rss .= "<ttl>5</ttl>\r\n"; 
    if (!empty($this->channel_imgurl)) { 
    $rss .= "<image>\r\n"; 
    $rss .= "<title><![CDATA[{$this->channel_title}]]></title>\r\n"; 
    $rss .= "<link>{$this->channel_link}</link>\r\n"; 
    $rss .= "<url>{$this->channel_imgurl}</url>\r\n"; 
    $rss .= "</image>\r\n"; 
    } 
    for ($i = 0; $i < count($this->items); $i++) { 
    $rss .= "<item>\r\n"; 
    $rss .= "<title><![CDATA[{$this->items[$i]['title']}]]></title>\r\n"; 
    $rss .= "<link>{$this->items[$i]['link']}</link>\r\n"; 
    $rss .= "<description><![CDATA[{$this->items[$i]['description']}]]></description>\r\n"; 
    $rss .= "<pubDate>{$this->items[$i]['pubDate']}</pubDate>\r\n"; 
    $rss .= "</item>\r\n"; 
    } 
    $rss .= "</channel>\r\n</rss>"; 
    return $rss; 
    } 
    /** 
    +---------------------------------------------------------- 
    * 输出RSS的XML到浏览器 
    +---------------------------------------------------------- 
    * @access public  
    +---------------------------------------------------------- 
    * @return void 
    +---------------------------------------------------------- 
    */
    public function Display() 
    { 
    header("Content-Type: text/xml; charset=utf-8"); 
    echo $this->Fetch(); 
    exit; 
    } 
    } 
    ?>
    在thinkphp控制器中的调用方法
    <?php 
    class FeedAction extends Action { 
    // 首页 
    public function index() { 
    $Bloginfo = M('Bloginfo')->find();//查询bloginfo表的一行记录 
    $Bloglist = D('News')->order('id')->limit(10)->select();//查询news表的记录 
    import("@.ORG.Rss");//加载Rss.class.php类文件,我放在前台项目Lib/ORG目录中。 
    $RSS = new RSS($Bloginfo['name'],'',$Bloginfo['description'],'');//初始化类,给RSS加上标题及描述信息,具体参数看构造器__construct 
    foreach($Bloglist as $list){ //遍历$Bloglist  
    $RSS->AddItem($list['title'],U('/Web/'.$list['id']),$list['content'],$list['ctime']); 
    } 
    $RSS->Display();//输出日记列表,不需要模板。 
    } 
    } 
    ?> 
叶景网络,网络推广,网站建设
特别推荐RECOMMEND
搜索引擎网站关键词seo优化的意义
视频推广怎么做
网站seo优化怎么做关键词排上首页?
SEO介绍什么叫搜索引擎网站关键词优化
seo优化怎样做提升关键词排名
热点图文Hot
PHP通过soap调用.net接口asmx文件 PHP通过soap调用.ne
PHP开发环境配置 PHP开发环境配置
wamp集成环境的虚拟域名配置方法 wamp集成环境的虚拟
wamp独立安装配置 wamp独立安装配置
关注排行RANKING
1

PHP通过soap调用.net接口asmx文件

PHP通过soap调用.net接口asmx文件 叶景网络(www cngxit com),致力于互联网品牌建设与网络营销,专业领域包括网...

2

PHP开发环境配置

PHP开发环境配置 下载PHP安装程序,并解压缩。(下载页面为http: www php net downloads php,下...

3

wamp集成环境的虚拟域名配置方法

wamp集成环境的虚拟域名配置方法 最近,发现身边很多人用wamp集成环境,这个虽然比较快捷,一步到位,但是只能访...

4

wamp独立安装配置

wamp独立安装配置 apache 中的 httpd conf LoadModule php5_module "D: lamp php5 php5apache2_2 dll " 加载模块并开启

5

php 获取今天明天昨天时间戳

php 获取今天明天昨天时间戳 叶景网络(www cngxit com),致力于互联网品牌建设与网络营销,专业领域包括网...

6

PHP获取服务器信息 MySql版本和浏览器信息

PHP获取服务器信息 MySql版本和浏览器信息 1、$_SESSION[ PHP_SELF ] -- 获取当前正在执行脚本的文件名 2...

7

smarty 截取字符串函数 truncate的用法

smarty 截取字符串函数 truncate的用法 smarty truncate 截取字符串,从字符串开始处截取某长度的字符,默认的长度为8...

8

php编程常用函数方法等

php编程常用函数方法等 叶景网络(www cngxit com),致力于互联网品牌建设与网络营销,专业领域包括网站...

9

如何让ThinkPHP的模板引擎达到最佳效率

如何让ThinkPHP的模板引擎达到最佳效率 默认情况下ThinkPHP框架系统默认使用的模板引擎是内置模板引擎。内置模板引擎支持模板文...