php 生成rss源,网站RSS源自动创建及调用方法(PHP版)
RSS(简易信息聚合,也叫聚合内容)是一种描述和同步网站内容的格式。使用RSS订阅能让用户更快地获取网站最新内容,也有利与网站内容更广泛的传播。目前RSS使用最广泛的是XML文件格式。
创建RSS源(服务端):
1、主文件rss.php:
require("rss_class.php");
$host = 'localhost'; //数据库地址
$user = 'root'; //帐号
$pass = '123456; //密码
$db = 'data'; //数据库名
$con = mysql_connect($host,$user,$pass);
if (!$con) die('Could not connect:'.mysql_error());
mysql_select_db($db,$con);
mysql_query('SET NAMES gb2312'); //编码
$result = mysql_query("select * from news",$con);
$rss = new UniversalFeedCreator();
$rss->title = "title"; //rss标题
$rss->link = "http://www.zhixing123.cn/"; //rss源地址
$rss->description = "description"; //rss描述
while($rs=mysql_fetch_array($result)){
$item = new FeedItem();
$item->title =$rs['title']; //标题字段$item->link = 'http://www.zhixing123.cn/post'.$rs['id']; //id标识字段
$item->description =$rs['description']; //描述字段
$rss->addItem($item);
}
$rss->saveFeed("RSS2.0", "rss.xml"); //输出xml
?>
2、类文件rss_class.php:
define("TIME_ZONE","");
define("FEEDCREATOR_VERSION", //generator
class FeedItem extends HtmlDescribable {
var $title, $description, $link;
var $author, $authorEmail, $image, $category, $comments, $guid, $source, $creator;
var $date;
var $additionalElements = Array();
}
class FeedImage extends HtmlDescribable {
var $title, $url, $link;
var $width, $height, $description;
}
class HtmlDescribable {
var $descriptionHtmlSyndicated;
var $descriptionTruncSize;
function getDescription() {
$descriptionField = new FeedHtmlField($this->description);
$descriptionField->syndicateHtml = $this->descriptionHtmlSyndicated;
$descriptionField->truncSize = $this->descriptionTruncSize;
return $descriptionField->output();
}
}
class FeedHtmlField {
var $rawFieldContent;
var $truncSize, $syndicateHtml;
function FeedHtmlField($parFieldContent) {
if ($parFieldContent) {
$this->rawFieldContent = $parFieldContent;
}
}
function output() {
if (!$this->rawFieldContent) {
$result = "";
} elseif ($this->syndicateHtml) {
$result = "rawFieldContent."]]>";
} else {
if ($this->truncSize and is_int($this->truncSize)) {
$result = FeedCreator::iTrunc(htmlspecialchars($this->rawFieldContent),$this->truncSize);
} else {
$result = htmlspecialchars($this->rawFieldContent);
}
}
return $result;
}
}
class UniversalFeedCreator extends FeedCreator {
var $_feed;
function _setFormat($format) {
switch (strtoupper($format)) {
case "2.0":
// fall through
case "RSS2.0":
$this->_feed = new RSSCreator20();
break;
case "0.91":
// fall through
case "RSS0.91":
$this->_feed = new RSSCreator091();
break;
default:
$this->_feed = new RSSCreator091();
break;
}
$vars = get_object_vars($this);
foreach ($vars as $key => $value) {
if (!in_array($key, array("_feed", "contentType", "encoding"))) {
$this->_feed->{$key} = $this->{$key};
}
}
}
function createFeed($format = "RSS0.91") {
$this->_setFormat($format);
return $this->_feed->createFeed();
}
function saveFeed($format="RSS0.91", $filename="", $displayContents=true) {
$this->_setFormat($format);
$this->_feed->saveFeed($filename, $displayContents);
}
function useCached($format="RSS0.91", $filename="", $timeout=3600) {
$this->_setFormat($format);
$this->_feed->useCached($filename, $timeout);
}
}
class FeedCreator extends HtmlDescribable {
var $title, $description, $link;
var $syndicationURL, $image, $language, $copyright, $pubDate, $lastBuildDate, $editor, $editorEmail, $webmaster, $category, $docs, $ttl, $rating, $skipHours, $skipDays;
var $xslStyleSheet = "";
var $items = Array();
var $contentType = "application/xml";
var $encoding = "gb2312"; //编码
var $additionalElements = Array();
function addItem($item) {
$this->items[] = $item;
}
function clearItem2Null() {
$this->items = array();
}
function iTrunc($string, $length) {
if (strlen($string)<=$length) {
return $string;
}
$pos = strrpos($string,".");
if ($pos>=$length-4) {
$string = substr($string,0,$length-4);
$pos = strrpos($string,".");
}
if ($pos>=$length*0.4) {
return substr($string,0,$pos+1)." ...";
}
$pos = strrpos($string," ");
if ($pos>=$length-4) {
$string = substr($string,0,$length-4);
$pos = strrpos($string," ");
}
if ($pos>=$length*0.4) {
return substr($string,0,$pos)." ...";
}
return substr($string,0,$length-4)." ...";
}
function _createGeneratorComment() {
return "\n";
}
function _createAdditionalElements($elements, $indentString="") {
$ae = "";
if (is_array($elements)) {
foreach($elements AS $key => $value) {
$ae.= $indentString."$value$key>\n";
}
}
return $ae;
}
function _createStylesheetReferences() {
$xml = "";
if (isset($this->cssStyleSheet)) $xml .= "<?xml-stylesheet href=\"".$this->cssStyleSheet."\" type=\"text/css\"?>\n";
if (isset($this->xslStyleSheet)) $xml .= "<?xml-stylesheet href=\"".$this->xslStyleSheet."\" type=\"text/xsl\"?>\n";
return $xml;
}
function createFeed() {
}
function _generateFilename() {
$fileInfo = pathinfo($_SERVER["PHP_SELF"]);
return substr($fileInfo["basename"],0,-(strlen($fileInfo["extension"])+1)).".xml";
php 生成rss源,网站RSS源自动创建及调用方法(PHP版)相关推荐
- 织梦dedecms网站栏目增加英文名称及调用方法
有时候网站需要中英文导航,而又想保留导航的hover中的样式,那么就需要进行织梦栏目的二次开发了.网上搜索了很多方法,基本都是负责人家的方法,残缺不全的.今天我整理,并亲自操作和修改,给大家完整奉献代 ...
- php如何生成一年的日历表_PHP简单创建日历的方法
本文实例讲述了PHP简单创建日历的方法.分享给大家供大家参考,具体如下: function build_calendar($month,$year) { // Create array contain ...
- excel教程的rss源_在Excel工作表上显示RSS源
excel教程的rss源 As you've heard, Google Reader will be disappearing in a few months <sigh>, and w ...
- 怎么打开网卡rss_RSS 进阶篇:Huginn - 真·为任意网页定制 RSS 源(PhantomJs 抓取)...
定制网页RSS源主要有FEED43和Huginn两种方法. FEED43:简单免费,六小时抓取一次,每次抓取20条静态页面.使用攻略- RSS 入门篇:FEED43&FeedEx-为静态网页定 ...
- [编]在Web站点中创建和使用Rss源
在Web站点中创建和使用Rss源 主要参考: Creating Rss Feeds For Your Web Site Consuming Rss Feeds On Your Web Site 术语表 ...
- 在Web站点中创建和使用Rss源
主要参考: Creating Rss Feeds For Your Web Site Consuming Rss Feeds On Your Web Site 术语表 tag:标签 markup ...
- 创建rss源_如何为任何网站查找或创建RSS源
创建rss源 If you're still a dedicated RSS user, you've no doubt noticed some sites no longer go out of ...
- RSS阅读——在繁杂的社会接受纯粹的信息 RSS介绍与RSS订阅源分享
在互联网信息大爆炸的背景下,人们需要一种全新的知识获取与整理方法.当我们面对繁杂的信息时,一种全新的技术诞生了 RSS(简易信息聚合技术)的诞生与发展 RSS技术的诞生 RSS技术是由Netscape ...
- rss源搜索_如何使用Google图像搜索,RSS源和更多自定义墙纸
rss源搜索 If you're looking for a free but powerful solution to automate your Windows wallpaper switchi ...
最新文章
- kaggle项目:基于随机森林模型的心脏病患者预测分类!
- Springboot项目因为kackson版本问题启动报错解决方案
- android 输入过滤,Android Studio添加日志过滤方式
- phalcon系列(1) hello phalcon
- SAP存货后续调整总结
- 流量银行与阿里联手放大招 1毛钱换1块钱
- 从0开始学Java——JSPServlet——HttpServletRequest相关的几个路径信息
- Python random 模块 - Python零基础入门教程
- python爬取网页版QQ空间,生成词云图、柱状图、折线图(附源码)
- Java 2实用教程(第五版)
- 看故事也能长知识,CPU的工作原理原来这么简单!
- logistic回归详解
- GIS历史概述与WebGis应用开发技术浅解
- 模拟电路仿真LTspice(3):三极管共发射极放大电路
- DSP28335笔记 ———— 中断系统 之 外部中断
- CSS box-shadow 详解
- C# 6 与 .NET Core 1.0 高级编程 - 41 ASP.NET MVC(上)
- fifo的rdata_FIFO的使用总结
- 雅思作文模板.html,雅思写作模板必看范文
- 技嘉 RTX 4090 已在香港发售,距正式上市两周