⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 feedcreator.php

📁 Joomla!是一套获得过多个奖项的内容管理系统(Content Management System, CMS)。Joomla!采用PHP+MySQL数据库开发
💻 PHP
📖 第 1 页 / 共 4 页
字号:
		}		$feed.= ">\n";		$feed.= "	<title>".htmlspecialchars($this->title)."</title>\n";		$feed.= "	<tagline>".htmlspecialchars($this->description)."</tagline>\n";		$feed.= "	<link rel=\"alternate\" type=\"text/html\" href=\"".htmlspecialchars($this->link)."\"/>\n";		$feed.= "	<id>".htmlspecialchars($this->link)."</id>\n";		$now = new FeedDate();		$feed.= "	<modified>".htmlspecialchars($now->iso8601())."</modified>\n";		if ($this->editor!="") {			$feed.= "	<author>\n";			$feed.= "		<name>".$this->editor."</name>\n";			if ($this->editorEmail!="") {				$feed.= "		<email>".$this->editorEmail."</email>\n";			}			$feed.= "	</author>\n";		}		$feed.= "    <generator>".$this->generator."</generator>\n";		$feed.= $this->_createAdditionalElements($this->additionalElements, "	");		$feed.= $this->additionalMarkup;		for ($i=0;$i<count($this->items);$i++) {			$feed.= "	<entry>\n";			$feed.= "		<title>".htmlspecialchars(strip_tags($this->items[$i]->title))."</title>\n";			$feed.= "		<link rel=\"alternate\" type=\"text/html\" href=\"".htmlspecialchars($this->items[$i]->link)."\"/>\n";			if ($this->items[$i]->date=="") {				$this->items[$i]->date = time();			}			$itemDate = new FeedDate($this->items[$i]->date);			$feed.= "		<created>".htmlspecialchars($itemDate->iso8601())."</created>\n";			$feed.= "		<issued>".htmlspecialchars($itemDate->iso8601())."</issued>\n";			$feed.= "		<modified>".htmlspecialchars($itemDate->iso8601())."</modified>\n";			$feed.= "		<id>".htmlspecialchars($this->items[$i]->link)."</id>\n";			$feed.= $this->_createAdditionalElements($this->items[$i]->additionalElements, "		");			$feed.= $this->items[$i]->additionalMarkup;			if ($this->items[$i]->author!="") {				$feed.= "		<author>\n";				$feed.= "			<name>".htmlspecialchars($this->items[$i]->author)."</name>\n";				$feed.= "		</author>\n";			}			if ($this->items[$i]->description!="") {				$feed.= "		<summary>".htmlspecialchars($this->items[$i]->description)."</summary>\n";			}			$feed.= "	</entry>\n";		}		$feed.= "</feed>\n";		return $feed;	}}/** * MBOXCreator is a FeedCreator that implements the mbox format * as described in http://www.qmail.org/man/man5/mbox.html * * @since 1.3 * @author Kai Blankenhorn <kaib@bitfolge.de> */class MBOXCreator extends FeedCreator {	function MBOXCreator() {		$this->contentType = "text/plain";		$this->encoding = "utf-8";	}	function qp_enc($input = "", $line_max = 76) {		$hex = array('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F');		$lines = preg_split("/(?:\r\n|\r|\n)/", $input);		$eol = "\r\n";		$escape = "=";		$output = "";		while( list(, $line) = each($lines) ) {			//$line = rtrim($line); // remove trailing white space -> no =20\r\n necessary			$linlen = strlen($line);			$newline = "";			for($i = 0; $i < $linlen; $i++) {				$c = substr($line, $i, 1);				$dec = ord($c);				if ( ($dec == 32) && ($i == ($linlen - 1)) ) { // convert space at eol only					$c = "=20";				} elseif ( ($dec == 61) || ($dec < 32 ) || ($dec > 126) ) { // always encode "\t", which is *not* required					$h2 = floor($dec/16); $h1 = floor($dec%16);					$c = $escape.$hex["$h2"].$hex["$h1"];				}				if ( (strlen($newline) + strlen($c)) >= $line_max ) { // CRLF is not counted					$output .= $newline.$escape.$eol; // soft line break; " =\r\n" is okay					$newline = "";				}				$newline .= $c;			} // end of for			$output .= $newline.$eol;		}		return trim($output);	}	/**	 * Builds the MBOX contents.	 * @return	string	the feed's complete text	 */	function createFeed() {		for ($i=0;$i<count($this->items);$i++) {			if ($this->items[$i]->author!="") {				$from = $this->items[$i]->author;			} else {				$from = $this->title;			}			$itemDate = new FeedDate($this->items[$i]->date);			$feed.= "From ".strtr(MBOXCreator::qp_enc($from)," ","_")." ".date("D M d H:i:s Y",$itemDate->unix())."\n";			$feed.= "Content-Type: text/plain;\n";			$feed.= "	charset=\"".$this->encoding."\"\n";			$feed.= "Content-Transfer-Encoding: quoted-printable\n";			$feed.= "Content-Type: text/plain\n";			$feed.= "From: \"".MBOXCreator::qp_enc($from)."\"\n";			$feed.= "Date: ".$itemDate->rfc822()."\n";			$feed.= "Subject: ".MBOXCreator::qp_enc(FeedCreator::iTrunc($this->items[$i]->title,100))."\n";			$feed.= "\n";			$body = chunk_split(MBOXCreator::qp_enc($this->items[$i]->description));			$feed.= preg_replace("~\nFrom ([^\n]*)(\n?)~","\n>From $1$2\n",$body);			$feed.= "\n";			$feed.= "\n";		}		return $feed;	}	/**	 * Generate a filename for the feed cache file. Overridden from FeedCreator to prevent XML data types.	 * @return string the feed cache filename	 * @since 1.4	 * @access private	 */	function _generateFilename() {		$fileInfo = pathinfo($_SERVER["PHP_SELF"]);		return substr($fileInfo["basename"],0,-(strlen($fileInfo["extension"])+1)).".mbox";	}}/** * OPMLCreator is a FeedCreator that implements OPML 1.0. * * @see http://opml.scripting.com/spec * @author Dirk Clemens, Kai Blankenhorn * @since 1.5 */class OPMLCreator extends FeedCreator {	function OPMLCreator() {		$this->encoding = "utf-8";	}	function createFeed() {		$feed = "<?xml version=\"1.0\" encoding=\"".$this->encoding."\"?>\n";		$feed.= $this->_createGeneratorComment();		$feed.= $this->_createStylesheetReferences();		$feed.= "<opml xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">\n";		$feed.= "	<head>\n";		$feed.= "		<title>".htmlspecialchars($this->title)."</title>\n";		if ($this->pubDate!="") {			$date = new FeedDate($this->pubDate);			$feed.= "		 <dateCreated>".$date->rfc822()."</dateCreated>\n";		}		if ($this->lastBuildDate!="") {			$date = new FeedDate($this->lastBuildDate);			$feed.= "		 <dateModified>".$date->rfc822()."</dateModified>\n";		}		if ($this->editor!="") {			$feed.= "		 <ownerName>".$this->editor."</ownerName>\n";		}		if ($this->editorEmail!="") {			$feed.= "		 <ownerEmail>".$this->editorEmail."</ownerEmail>\n";		}		$feed.= "	</head>\n";		$feed.= "	<body>\n";		for ($i=0;$i<count($this->items);$i++) {			$feed.= "	<outline type=\"rss\" ";			$title = htmlspecialchars(strip_tags(strtr($this->items[$i]->title,"\n\r","  ")));			$feed.= " title=\"".$title."\"";			$feed.= " text=\"".$title."\"";			//$feed.= " description=\"".htmlspecialchars($this->items[$i]->description)."\"";			$feed.= " url=\"".htmlspecialchars($this->items[$i]->link)."\"";			$feed.= "/>\n";		}		$feed.= "	</body>\n";		$feed.= "</opml>\n";		return $feed;	}}/** * HTMLCreator is a FeedCreator that writes an HTML feed file to a specific * location, overriding the createFeed method of the parent FeedCreator. * The HTML produced can be included over http by scripting languages, or serve * as the source for an IFrame. * All output by this class is embedded in <div></div> tags to enable formatting * using CSS. * * @author Pascal Van Hecke * @since 1.7 */class HTMLCreator extends FeedCreator {	var $contentType = "text/html";	/**	 * Contains HTML to be output at the start of the feed's html representation.	 */	var $header;	/**	 * Contains HTML to be output at the end of the feed's html representation.	 */	var $footer ;	/**	 * Contains HTML to be output between entries. A separator is only used in	 * case of multiple entries.	 */	var $separator;	/**	 * Used to prefix the stylenames to make sure they are unique	 * and do not clash with stylenames on the users' page.	 */	var $stylePrefix;	/**	 * Determines whether the links open in a new window or not.	 */	var $openInNewWindow = true;	var $imageAlign ="right";	/**	 * In case of very simple output you may want to get rid of the style tags,	 * hence this variable.  There's no equivalent on item level, but of course you can	 * add strings to it while iterating over the items ($this->stylelessOutput .= ...)	 * and when it is non-empty, ONLY the styleless output is printed, the rest is ignored	 * in the function createFeed().	 */	var $stylelessOutput ="";	/**	 * Writes the HTML.	 * @return	string	the scripts's complete text	 */	function createFeed() {		// if there is styleless output, use the content of this variable and ignore the rest		if ($this->stylelessOutput!="") {			return $this->stylelessOutput;		}		//if no stylePrefix is set, generate it yourself depending on the script name		if ($this->stylePrefix=="") {			$this->stylePrefix = str_replace(".", "_", $this->_generateFilename())."_";		}		//set an openInNewWindow_token_to be inserted or not		if ($this->openInNewWindow) {			$targetInsert = " target='_blank'";		}		// use this array to put the lines in and implode later with "document.write" javascript		$feedArray = array();		if ($this->image!=null) {			$imageStr = "<a href='".$this->image->link."'".$targetInsert.">".							"<img src='".$this->image->url."' border='0' alt='".							FeedCreator::iTrunc(htmlspecialchars($this->image->title),100).							"' align='".$this->imageAlign."' ";			if ($this->image->width) {				$imageStr .=" width='".$this->image->width. "' ";			}			if ($this->image->height) {				$imageStr .=" height='".$this->image->height."' ";			}			$imageStr .="/></a>";			$feedArray[] = $imageStr;		}		if ($this->title) {			$feedArray[] = "<div class='".$this->stylePrefix."title'><a href='".$this->link."' ".$targetInsert." class='".$this->stylePrefix."title'>".				FeedCreator::iTrunc(htmlspecialchars($this->title),100)."</a></div>";		}		if ($this->getDescription()) {			$feedArray[] = "<div class='".$this->stylePrefix."description'>".				str_replace("]]>", "", str_replace("<![CDATA[", "", $this->getDescription())).				"</div>";		}		if ($this->header) {			$feedArray[] = "<div class='".$this->stylePrefix."header'>".$this->header."</div>";		}		for ($i=0;$i<count($this->items);$i++) {			if ($this->separator and $i > 0) {				$feedArray[] = "<div class='".$this->stylePrefix."separator'>".$this->separator."</div>";			}			if ($this->items[$i]->title) {				if ($this->items[$i]->link) {					$feedArray[] =						"<div class='".$this->stylePrefix."item_title'><a href='".$this->items[$i]->link."' class='".$this->stylePrefix.						"item_title'".$targetInsert.">".FeedCreator::iTrunc(htmlspecialchars(strip_tags($this->items[$i]->title)),100).						"</a></div>";				} else {					$feedArray[] =						"<div class='".$this->stylePrefix."item_title'>".						FeedCreator::iTrunc(htmlspecialchars(strip_tags($this->items[$i]->title)),100).						"</div>";				}			}			if ($this->items[$i]->getDescription()) {				$feedArray[] =				"<div class='".$this->stylePrefix."item_description'>".					str_replace("]]>", "", str_replace("<![CDATA[", "", $this->items[$i]->getDescription())).					"</div>";			}		}		if ($this->footer) {			$feedArray[] = "<div class='".$this->stylePrefix."footer'>".$this->footer."</div>";		}		$feed= "".join($feedArray, "\r\n");		return $feed;	}	/**	 * Overrrides parent to produce .html extensions	 *	 * @return string the feed cache filename	 * @since 1.4	 * @access private	 */	function _generateFilename() {		$fileInfo = pathinfo($_SERVER["PHP_SELF"]);		return substr($fileInfo["basename"],0,-(strlen($fileInfo["extension"])+1)).".html";	}}/** * JSCreator is a class that writes a js file to a specific * location, overriding the createFeed method of the parent HTMLCreator. * * @author Pascal Van Hecke */class JSCreator extends HTMLCreator {	var $contentType = "text/javascript";	/**	 * writes the javascript	 * @return	string	the scripts's complete text	 */	function createFeed()	{		$feed = parent::createFeed();		$feedArray = explode("\n",$feed);		$jsFeed = "";		foreach ($feedArray as $value) {			$jsFeed .= "document.write('".trim(addslashes($value))."');\n";		}		return $jsFeed;	}	/**	 * Overrrides parent to produce .js extensions	 *	 * @return string the feed cache filename	 * @since 1.4	 * @access private	 */	function _generateFilename() {		$fileInfo = pathinfo($_SERVER["PHP_SELF"]);		return substr($fileInfo["basename"],0,-(strlen($fileInfo["extension"])+1)).".js";	}}/*** GoogleSiteMapIndex is a FeedCreator that implements Google Sitemap Index 0.84.** @see https://www.google.com/webmasters/sitemaps/docs/en/protocol.html#sitemapFileRequirements* taken from http://phpbb.bitfolge.de/viewtopic.php?t=102*/class GoogleSiteMapIndex extends FeedCreator {	/**	* Builds the Google Sitemap feed's text.	* The feed will contain all items previously added in the same order.	* @return string the feed's complete text	*/	function createFeed() {		$feed 	= "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";		$feed	.= "<sitemapindex xmlns=\"http://www.google.com/schemas/sitemap/0.84\"\n";		$feed	.= "			  xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n";		$feed	.= "			  xsi:schemaLocation=\"http://www.google.com/schemas/sitemap/0.84\n";		$feed	.= "			  http://www.google.com/schemas/sitemap/0.84/siteindex.xsd\">\n";		$total = count( $this->items ) ;		for ( $i=0; $i < $total; $i++ ) {			$feed	.= "  <sitemap>\n";			$feed	.= "	<loc>".htmlspecialchars($this->items[$i]->link)."</loc>\n";			if ( $this->items[$i]->date != "" ) {				$itemDate 	= new FeedDate( $this->items[$i]->date );				$feed		.= "	<lastmod>".htmlspecialchars($itemDate->iso8601())."</lastmod>\n";			}			$feed.= "  </sitemap>\n";		}		$feed.= "</sitemapindex>\n";		return $feed;	}}/*** TEST SCRIPT *********************************************************//include("feedcreator.class.php");$rss = new UniversalFeedCreator();$rss->useCached();$rss->title = "PHP news";$rss->description = "daily news from the PHP scripting world";//optional//$rss->descriptionTruncSize = 500;//$rss->descriptionHtmlSyndicated = true;//$rss->xslStyleSheet = "http://feedster.com/rss20.xsl";$rss->link = "http://www.dailyphp.net/news";$rss->feedURL = "http://www.dailyphp.net/".$PHP_SELF;$image = new FeedImage();$image->title = "dailyphp.net logo";$image->url = "http://www.dailyphp.net/images/logo.gif";$image->link = "http://www.dailyphp.net";$image->description = "Feed provided by dailyphp.net. Click to visit.";//optional$image->descriptionTruncSize = 500;$image->descriptionHtmlSyndicated = true;$rss->image = $image;// get your news items from somewhere, e.g. your database://mysql_select_db($dbHost, $dbUser, $dbPass);//$res = mysql_query("SELECT * FROM news ORDER BY newsdate DESC");//while ($data = mysql_fetch_object($res)) {	$item = new FeedItem();	$item->title = "This is an the test title of an item";	$item->link = "http://localhost/item/";	$item->description = "<b>description in </b><br />HTML";	//optional	//item->descriptionTruncSize = 500;	$item->descriptionHtmlSyndicated = true;	$item->date = time();	$item->source = "http://www.dailyphp.net";	$item->author = "John Doe";	$rss->addItem($item);//}// valid format strings are: RSS0.91, RSS1.0, RSS2.0, PIE0.1, MBOX, OPML, ATOM0.3, HTML, JSecho $rss->saveFeed("RSS0.91", "feed.xml");***************************************************************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -