`
天梯梦
  • 浏览: 13730198 次
  • 性别: Icon_minigender_2
  • 来自: 洛杉矶
社区版块
存档分类
最新评论

codeigniter 操作 Rss

阅读更多

I wrote a codeigniter library through which you can retrieve the rss feeds from xml file

Add the below code in Rss.php file and save the file in application library folder ,

 

 

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
/**
 * CodeIgniter
 *
 * An open source application development framework for PHP 4.3.2 or newer
 *
 * @package		CodeIgniter
 * @author		Pradeep Kumar
 * @copyright	Copyright (c) 2009, hyderabad, Inc.
 * @license		http://tech-pundits.com/license.html
 * @link		http://tech-pundits.com
 * @since		Version 1.0
 * @filesource
 */

// ------------------------------------------------------------------------

/**
 * Rss Class
 *
 * @package		CodeIgniter
 * @subpackage	Libraries
 * @category	Rss Parser
 * @author		Pradeep Kumar
 */
class Rss {
   
	public $url = ""; // saves the rss feed url
	private $aFiledata = ""; // saves the file data in array format
	private $sFiledata = "";
	private $item = "";
	private $entry = "";
	private $title = "";
	private $link = "";
	private $data = "";
	private $description = "";
	private $date = "";
	private $date_gmt = "";
	private $image = "";
	private $result;
	/**
	 * @return unknown
	 */
	public function getAFiledata() {
		return $this->aFiledata;
	}
	
	/**
	 * @return unknown
	 */
	public function getEntry() {
		return $this->entry;
	}
	
	/**
	 * @return unknown
	 */
	public function getItem() {
		return $this->item;
	}
	
	/**
	 * @return unknown
	 */
	public function getSFiledata() {
		return $this->sFiledata;
	}
	
	/**
	 * @return unknown
	 */
	public function getTitle() {
		return $this->title;
	}
	
	/**
	 * @return unknown
	 */
	public function getUrl() {
		return $this->url;
	}
	
	/**
	 * @return unknown
	 */
	public function getData() {
		return $this->data;
	}
	
	/**
	 * @return unknown
	 */
	public function getDescription() {
		return $this->description;
	}
	
	/**
	 * @return unknown
	 */
	public function getDate() {
		return $this->date;
	}
	
	/**
	 * @return unknown
	 */
	public function getDate_gmt() {
		return $this->date_gmt;
	}
	
	/**
	 * @return unknown
	 */
	public function getImage() {
		return $this->image;
	}
	
	/**
	 * @return unknown
	 */
	public function getResult() {
		return $this->result;
	}
	
	/**
	 * @param unknown_type $result
	 */
	public function setResult($result) {
		$this->result = $result;
	}

	/**
	 * @param unknown_type $image
	 */
	public function setImage($image) {
		$this->image = $image;
	}

	/**
	 * @param unknown_type $date_gmt
	 */
	public function setDate_gmt($date_gmt) {
		$this->date_gmt = $date_gmt;
	}
	
	/**
	 * @return unknown
	 */
	public function getLink() {
		return $this->link;
	}
	
	/**
	 * @param unknown_type $link
	 */
	public function setLink($link) {
		$this->link = $link;
	}

	/**
	 * @param unknown_type $date
	 */
	public function setDate($date) {
		$this->date = $date;
	}
	/**
	 * @param unknown_type $data
	 */
	public function setData($data) {
		$this->data = $data;
	}
	
	/**
	 * @param unknown_type $description
	 */
	public function setDescription($description) {
		$this->description = $description;
	}

	/**
	 * @param unknown_type $aFiledata
	 */
	public function setAFiledata($aFiledata) {
		$this->aFiledata = $aFiledata;
	}
	
	/**
	 * @param unknown_type $Entry
	 */
	public function setEntry($entry) {
		$this->entry = $entry;
	}
	
	/**
	 * @param unknown_type $Item
	 */
	public function setItem($item) {
		$this->item = $item;
	}
	
	/**
	 * @param unknown_type $sFiledata
	 */
	public function setSFiledata($sFiledata) {
		$this->sFiledata = $sFiledata;
	}
	
	/**
	 * @param unknown_type $Title
	 */
	public function setTitle($title) {
		$this->title = $title;
	}
	
	/**
	 * @param unknown_type $Url
	 */
	public function setUrl($url) {
		$this->url = $url;
	}
	
	
/**
	 * Constructor
	 *
	 * @access	public
	 * @param	array	initialization parameters
	 */
	function Rss($params = array())
	{
		if (count($params) > 0)
		{
			$this->initialize($params);		
		}
		
		log_message("debug", "Rss Class Initialized");
	}
	
	// --------------------------------------------------------------------
	
	/**
	 * Initialize Preferences
	 *
	 * @access	public
	 * @param	array	initialization parameters
	 * @return	void
	 */
	function initialize($params = array())
	{
		if (count($params) > 0)
		{
			foreach ($params as $key => $val)
			{
				if (isset($this->$key))
				{
					$this->$key = $val;
				}
			}
		}
	}
	
	
	function getRss()
	{
		return $this->run();
		
	}
	
	function run()
	{
		$this->setAFiledata(file($this->getUrl()));

  		$this->setSFiledata(implode("", $this->getAFiledata()));
  		 
		$this->setSFiledata(str_replace(array ("\r\n", "\r"), "\n", $this->getSFiledata()));
		preg_match_all("|<item[^>]*>(.*?)</item>|is", $this->getSFiledata(), $this->item);
		$items = $this->getItem();
		
		$this->setItem($items[0]);
		$this->setData("<table>");
		$this->result = array();
		
		if(empty($this->item))
		{
			preg_match_all("|<entry[^>]*>(.*?)</entry>|is", $this->getSFiledata(), $this->item);
			$items = $this->getItem();
			$this->setItem($items[0]);
			$this->setData("<table>");
			$this->result = array();
		}
		foreach ($this->getItem() as $item)
		{
			preg_match("|<title[^>]*>(.*?)</title>|is", $item, $this->title);
			$this->setTitle(strip_tags(str_replace(array("<![CDATA[', ']]>"), array("",""), trim($this->title[1]))));
			
			preg_match("|<pubdate[^>]*>(.*?)</pubdate>|is", $item, $this->date_gmt);
			if ($this->date_gmt) {
				$this->setDate_gmt(strtotime($this->date_gmt[1]));
			} else {
				preg_match("|<dc:date[^>]*>(.*?)</dc:date>|is", $item, $this->date_gmt);
				if(isset($this->date_gmt[1]))
				{
					$this->setDate_gmt(preg_replace("|([-+])([0-9]+):([0-9]+)$|", "\1\2\3", $this->date_gmt[1]));
					$this->setDate_gmt(str_replace("T", " ", $this->date_gmt));
					$this->setDate_gmt(strtotime($this->date_gmt));
				}
			}
			if($this->getDate_gmt())
			{
				$this->setDate_gmt(gmdate("Y-m-d H:i:s", $this->getDate_gmt()));
				$this->setDate($this->getDate_gmt());
				$this->getDate();
			}
			preg_match('|<media:content url="(.*?)" />|is', $item, $this->image);
			preg_match("|<media:text[^>]*>(.*?)</media:text>|is", $item, $this->image);
			
			$sarr = array("&amp;nbsp;","#60;","&gt;","&lt;");
				$repl = array("","<",">","<");
				if(isset($this->image[1]))
				{
					$this->image = str_replace($sarr,$repl,$this->image[1]);
					preg_match('|<img[^>]*src="(.*?)"[^>]*/>|is', $this->image, $this->image);
					$this->setImage($this->image[1]);
				}
				else 
					$this->image = "";

			preg_match("|<description[^>]*>(.*?)</description>|is", $item, $this->description);
	

			if($this->getDescription())
			{
				$this->setDescription(str_replace(array("<![CDATA[', ']]>"), "", trim($this->description[1])));
				$this->setDescription(str_replace($sarr,$repl,$this->description));
			}
			else 
			{
				preg_match("|<summary[^>]*>(.*?)</summary>|is", $item, $this->description);
				if($this->getDescription())
				{
				$this->setDescription(str_replace(array("<![CDATA[', ']]>"), "", trim($this->description[1])));
				
				$this->setDescription(str_replace($sarr,$repl,$this->description));
				}
				else 
				$this->setDescription("");
			}
			preg_match("|<link[^>]*>(.*?)</link>|is", $item, $this->link);
			
			if(!empty($this->link))
			{
				
			if(eregi("<media",$this->link[1]))
				{
					$img ="";
				
					preg_match("|<media:thumbnail[^>]*>(.*?)</media:thumbnail>|is", $item, $img);
					preg_match('|<link rel="alternate"[^>]* href="(.*?)">|is', $item, $this->link);
					$this->setDescription($img[1].$this->getDescription());
				}
			$this->setLink(str_replace(array("<![CDATA[', ']]>",'"/>'), "", trim(strip_tags($this->link[1]))));
			$this->link;
			}
			else 
			{
					preg_match('|<link rel="alternate"[^>]* href="(.*?)"/>|is', $item, $this->link);
					$this->setLink(str_replace(array('<![CDATA[', ']]>','"/>'), '', trim(strip_tags($this->link[1]))));
					$this->link;
			}
			
			
			$this->data .= '<tr><td> <a title="'.strip_tags($this->getDescription()).'" href="'.$this->getLink().'">'.$this->getTitle().'</a></td><td>'.$this->getDate().'</td></tr>';
			$this->result[] = array(
										"title"	=> $this->getTitle(),
										"link"	=> $this->getLink(),
										"date"	=> $this->getDate(),
										"image" => $this->getImage(),
										"description" => $this->getDescription(),
									);	
		}
		$this->data .="</table>";
		
	 return $this->getResult();
	}
 
}

 

Add the below code in your controller

 

<?php 
$this->load->libarary("rss");
$config["utl"]="rsslink";

$this->rss->initialize($config);

$result = $this->rss->getRss();

print_r($result);

?>
 

 

Click download code

 

 

  • rss.zip (2.5 KB)
  • 下载次数: 31
分享到:
评论
2 楼 天梯梦 2011-08-05  
呵呵 np~
1 楼 as3291363 2011-08-05  
thx  謝謝你的分享....

相关推荐

    无涯教程(LearnFk)-Codeigniter教程离线版.pdf

    CodeIgniter的安装过程非常简单,只需要按照以下步骤操作: 1. 从官方网站下载最新版本的CodeIgniter。 2. 解压缩下载的文件夹。 3. 将所有文件和文件夹上传到服务器。 4. 通过浏览器访问服务器的URL(例如***)...

    codeigniter中实现一次性加载多个view的方法

    因此,如果需要在同一个页面上显示多个视图,就不能在控制器方法中使用 `return` 关键字返回视图,因为这样做会导致第一个视图加载之后,其内容被输出,并且方法立即结束,后续的视图加载操作都不会执行。...

    PHP毕业设计项目源码包含数据库

    这个项目涉及的主要技术包括XML解析(处理RSS馈送)、PHP的DOMDocument类用于解析和操作XML数据,以及可能的AJAX技术实现页面无刷新更新。 2. **博客系统**:博客系统是一个在线发布和分享文章的平台。它通常包括...

    50个非常有用的PHP工具.pdf

    - SimplePie:处理RSS和Atom feeds的PHP库。 - HTML Purifier:清除XSS攻击,确保HTML内容符合W3C标准。 - TCPDF:生成PDF文件的PHP库。 - htmlSQL:使用SQL查询HTML和XML内容的PHP类。 - The Greatest ...

    PHP 中的 MVC 模式.

    - Model:RSSFeedModel,处理RSS订阅源的解析和存储。 - View:FeedListView,显示订阅源的文章列表。 - Controller:FeedController,接收用户请求,如加载新的订阅源,或者更新已有的订阅源。 在实际开发中,...

    中国历史分享APP的设计与实现+毕业论文

    "今日新闻"则需要实时更新,可能需要对接新闻API,如RSS订阅或新闻服务商提供的接口。"小常识"可以是历史趣闻或知识点,同样需要定期更新。 2. **历史分类**: 这个模块展示了历史信息的列表,以及详细的历史事件...

    PHP.Web.2.0开发实战 随书源码chapter-09

    此外,还有RSS(Really Simple Syndication)用于内容聚合,以及APIs(应用程序接口)允许不同服务之间的数据交换。 3. **PHP与数据库交互**:在Web 2.0应用中,数据存储和检索通常是关键。PHP支持多种数据库系统,...

    planet.archlinux.de:用于archlinux.de的Feed Planet

    4. **Web开发框架**:虽然没有直接提到,但PHP通常会配合Web开发框架如Laravel、Symfony或CodeIgniter来提高开发效率和代码质量。这些框架提供了模板引擎、ORM(对象关系映射)、路由等工具,简化了Web应用的构建。 ...

    常用的五十个PHP工具

    - **phpMyAdmin**:MySQL数据库管理和操作平台。 - **PHPExcel**:生成MS Office Excel文档的库。 - **Phormer**:轻量级PHP在线相册。 - **xajax PHP Class Library**:创建Ajax应用程序的库。 - **...

    50个非常有用的PHP工具(20211010005844).pdf

    - **SimplePie**: 解析RSS和Atom feeds的PHP库。 - **HTMLPurifier**: 清理和验证HTML,防止XSS攻击。 - **TCPDF**: 快速生成PDF的PHP5库。 - **htmlSQL**: 使用SQL查询HTML和XML内容的PHP类。 - **The ...

Global site tag (gtag.js) - Google Analytics