第二个灵魂 发表于 2015-2-4 00:10:46

PHP网页设计rss2生成类

理解动态语言的概念,运做机制,熟悉PHP语法rss   <LI class=content id=pre_1152199343><? php/**//* * @(#)Rss2Gen.inc.php (beta) 2005/2/19 * * exblog RSS2 生成类,完成了RSS2标准中的大局部内容。 * * 利用办法请见本类底部(Rss2Gen类利用正文)信息。 * * 本法式为收费法式,源代码利用者可恣意更改(请勿用于贸易用处),但请保存本版权信息! * * @author HexUzHoNG <hexuzhong@163.com> * @version beta-2, 2005-03-11 * @since exBlog-1.3.0 * */ class Rss2Gen { var $rss_header; //RSS文档头,寄存一个<rss>根元素及其version属性。 var $item; // var $items; var $channel_header; //频道的头部信息,寄存频道称号、URL、描写、言语、版权等等。 //--------------- 以下元素是可选的频道子元素 --------------// var $channel_language; //频道利用的言语品种,例如en-us、zh-cn等,放便会萃器组织中一言语的站点。 var $channel_copyright; //频道内容的版权声明。 var $channel_managingEditor; //对该频道内容担任的团体的Email地址 var $channel_webMaster; //对该频道的手艺撑持担任的团体的Email地址 var $channel_pubDate; //该频道内容的发布日期 var $channel_lastBuildDate; //前次频道内容更改的工夫 var $channel_category; //申明频道属于哪个或多个分类 var $channel_generator = "<generator>exblog RSS2 builder</generator>"; //用于生成该频道的法式 var $channel_docs; //RSS文件所利用格局的申明文档地点的URL var $channel_cloud; //答应历程注册为“cloud”,频道更新时告诉它 var $channel_ttl; //ttl 代表存活工夫,存活工夫是一个数字,暗示提纲在刷新之前缓冲的分钟数 var $channel_image; //指定一个能在频道中显示的GIF、JPEG 或PNG 图象 //var $channel_rating; //关于该频道的 PICS 评价 //var $channel_textInput; //界说可与频道一同显示的输出框 //var $channel_skipHours; //告知会萃器哪些小时的更新可以疏忽 //var $channel_skipDays; //告知会萃器那一天的更新可以疏忽 var $channel; //全部rss2文档信息,用与生成全部页面。 var $halt_on_error = true; /**//** * 机关函数,其参数皆为rss2必需的频道子元素,假如不填,则为默许内容。 * * @param String $title 频道的称号,频道的title应当和web站点的title尽可能分歧。 * @param String $link 与该频道联系关系的web站点的URL。 * @param String $description 对频道的一段复杂描写,如引见频道是做甚么的。 * @access public */ function Rss2Gen() { $this->fillHeader(); } /**//** * 生成RSS文档头,必需以一个<rss>元素作为根元素,其有一个强迫属性version,指定以后文档恪守的RSS版本。 * @access private */ function fillHeader() { $this->rss_header = "<?xml version="1.0" encoding="gb2312"?>
rn"; $this->rss_header .= " <rss version="2.0">rn"; } /**//** * 设置频道头,个中三个元素为必需的。 * @param String $title 频道的称号,频道的title应当和Web站点的title尽可能分歧。 * @param String $link 与该频道联系关系的Web站点或站点区域的URL。 * @param String $description 对频道的一段复杂描写,扼要引见频道是做甚么的。 */ function setChannel($title = "exblog", $link = "http://www.exblog.org", $description = "exblog") { $this->channel_header = " <title><!]></title>n"; $this->channel_header .= " <link>".$link."</link>rn"; $this->channel_header .= " <description><!]></description>rn"; } function halt($msg) { if ($this->halt_on_error) { $this->haltmsg($msg); } die("exblog RSS2 exit"); } function haltmsg($msg) { sprintf("<b>exblog RSS2 builder ERROR: %s</b><br>rn", $msg); } /**//** * 设置该RSS文档的言语,默许为简体中文。 * @access public */ function setLanguage($lang = "zh_cn") { $this->channel_language = " <language>".$lang."</language>rn"; } /**//** * 频道内容的版权声明 * @access public */ function setCopyright($copyright = "exblog") { $this->channel_copyright = " <copyright>".$copyright."</copyright>rn"; } /**//** * 对该频道内容担任的团体的Email地址 * @access public */ function setManagingEditor($email = NULL) { if (empty($email)) { $this->halt("假如你设置了该频道内容担任的团体的Email地址,请填写她。"); } $this->channel_managingEditor = " <managingEditor>".$email."</managingEditor>rn"; } /**//** * 对该频道的手艺撑持担任的团体的Email地址 * @access public */ function setWebMaster($email = NULL) { if (empty($email)) { $this->halt("假如你设置了该频道的手艺撑持担任的团体的Email地址,请填写她。 :)"); } $this->channel_webMaster = " <webMaster>".$email."</webMaster>rn"; } /**//** * 该频道内容的发布日期。 * @access public */ function setPubDate($date = NULL) { if (empty($date)) { $date = date("Y/m/d"); $this->channel_pubDate = " <pubDate>".$date."</pubDate>rn"; } $this->channel_pubDate = " <pubDate>".$date."</pubDate>rn"; } /**//** * 前次频道内容更改的工夫 * @access public */ function setLastBuildDate($date = NULL) { if (empty($date)) { $date = date("Y/m/d"); $this->channel_lastBuildDate = " <lastBuildDate>".$date."</lastBuildDate>rn"; } $this->channel_lastBuildDate = " <lastBuildDate>".$date."</lastBuildDate>rn"; } /**//** * 申明频道属于哪个或多个分类 * @access public */ function setCategory($category) { $this->channel_category = " <category>".$category."</category>rn"; } /**//** * RSS文件所利用格局的申明文档地点的URL * @access public */ function setDocs($url) { $this->channel_docs = " <docs>".$url."</docs>rn"; } /**//** * ttl 代表存活工夫,存活工夫是一个数字,暗示提纲在刷新之前缓冲的分钟数 * @access public */ function setTtl($minute) { $this->channel_ttl = " <ttl>".$minute."</ttl>rn"; } /**//** * 指定一个能在频道中显示的GIF、JPEG 或PNG 图象 * * @param String $url 必须,是暗示该频道的 GIF、JPEG 或 PNG 图象的URL * @param String $title 必须,是图像的描写。当频道以 HTML 出现时,用作 HTML <image> 标签的 ALT 属性。 * @param String $link 必须,是站点的 URL。假如频道以 HTML 出现,该图象作为到这个站点的链接。 * @param Integer $width 暗示图像的像素宽,必需和 $height 一同设置,不然不会显示此属性。 * @param Integer $height 暗示图像的像素高,必需和 $width 一同设置,不然不会显示此属性。 * @param String $description 环绕着该图象构成的链接元素的 title 属性。 * * @access public */ function setChannelImage($url, $title, $link, $width = NULL, $height = NULL, $description = NULL) { if (!isset($url)) $this->halt("假如你要设置图片,该图象地址属性必需填写。"); if (!isset($title)) $this->halt("假如你要设置图片,该图象描写属性必需填写。"); if (!isset($link)) $this->halt("假如你要设置图片,该图象链接属性必需填写。这个URL普通和图象地址属性不异"); $this->channel_image = " <image>rn"; $this->channel_image .= " <url>".$url."</url>rn"; $this->channel_image .= " <title><!]></title>rn"; $this->channel_image .= " <link>".$link."</link>rn"; //假如设置了图象宽、高则添加此属性。 if (!empty($width) && !empty($height)) { $this->channel_image .= " <width>".$width."</width>rn"; $this->channel_image .= " <height>".$height."</height>rn"; } if (!empty($description)) $this->channel_image .= " <description><!]></description>rn"; $this->channel_image .= "</image>rn"; } /**//** * 添加一条item到channel中,固然item的子元素都是可选的,但最少要存在一个title或description * * @param String $title 项(item)的题目 * @param String $description 项(item)的纲目 * @param String $link 项(item)的URL * @param String $author 项(item)作者的Email 地址 * @param String $category 包含项(item)的一个或多个分类 * @param String $comments 关于项(item)的正文页的URL * @param String $enclosure 撑持和该项(item)有关的媒体对象 * @param String $guid 独一与该项(item)接洽在一同的永世性链接 * @param String $pubDate 该项(item)是甚么时分宣布的 * @param String $Source 该项(item)来自哪一个RSS 频道,当把项(item)聚合在一同时十分有效 * * @access public */ function addItem($title = NULL, $description = NULL, $link = NULL, $author = NULL, $category = NULL, $comments = NULL, $enclosure = NULL, $guid = NULL, $pubDate = NULL, $source = NULL) { //判别是不是最少添加了title或description if (empty($title) && empty($description)) { $this->halt("item:请最少设置title或description属性。"); } else { $this->item = " <item>rn"; if (!empty($title)) $this->item .= " <title><!]></title>rn"; if (!empty($link)) $this->item .= " <link>".$link."</link>rn"; if (!empty($description)) $this->item .= " <description><!]></description>rn"; if (!empty($author)) $this->item .= " <author><!]></author>rn"; if (!empty($category)) $this->item .= " <category><!]></category>rn"; if (!empty($comments)) $this->item .= " <comments><!]></comments>rn"; if (!empty($enclosure)) $this->item .= " <enclosure><!]></enclosure>rn"; if (!empty($guid)) $this->item .= " <guid>".$guid."</guid>rn"; if (!empty($pubDate)) $this->item .= " <pubDate>".$pubDate."</pubDate>rn"; if (!empty($source)) $this->item .= " <source><!]></source>rn"; $this->item .= "</item>rn"; } $this->items .= $this->item; } /**//** * 输入 rss2 文档 */ function builder() { $this->stuff(); header("Content-type:application/xml"); print $this->channel; } /**//** * 兼容老版本rss生成办法,去失落了写文件功效。 * */ function buildRssFeed($param = NULL) { $this->builder(); } /**//** * 分解全部RSS2文档 * */ function stuff() { $this->channel = $this->rss_header; $this->channel .= $this->channel_header; if (isset($this->channel_language)) $this->channel .= $this->channel_language; if (isset($this->channel_copyright)) $this->channel .= $this->channel_copyright; if (isset($this->channel_managingEditor)) $this->channel .= $this->channel_managingEditor; if (isset($this->channel_webMaster)) $this->channel .= $this->channel_webMaster; if (isset($this->channel_pubDate)) $this->channel .= $this->channel_pubDate; if (isset($this->channel_lastBuildDate)) $this->channel .= $this->channel_lastBuildDate; if (isset($this->channel_category)) $this->channel .= $this->channel_category; if (isset($this->channel_docs)) $this->channel .= $this->channel_docs; if (isset($this->channel_cloud)) $this->channel .= $this->channel_cloud; if (isset($this->channel_ttl)) $this->channel .= $this->channel_ttl; if (isset($this->channel_image)) $this->channel .= $this->channel_image; $this->channel .= $this->channel_generator; $this->channel .= $this->items; $this->channel .= "</rss>rn"; } } /**//******************************* Rss2Gen 类利用正文 *******************/ /**//* $rss2gen = new Rss2Gen(); $rss2gen->setChannel("exblog222rss", "http://elliott.fengling.net", "elliott rss2gen"); //以下局部为可添加信息 //$rss2gen->setLanguage("zh-cn"); //$rss2gen->setCopyright("exblog @"); //$rss2gen->setManagingEditor("elliott_hee@163.com"); //$rss2gen->setWebMaster("elliott@yeah.net"); //$rss2gen->setPubDate(); //$rss2gen->setLastBuildDate(); //$rss2gen->setCategory("none"); //$rss2gen->setDocs("http://www.exblog.org/rss_docs.html"); //$rss2gen->setTtl(600); //$rss2gen->setChannelImage("/XrssFile/2006-9/24/200692413947513.gif", "demo~~ :)", "http://www.exblog.org"); //------------------------ //---添加一笔记录到rss文档中,最少需求一个参数,title或description $rss2gen->addItem("item1", "item1's description", "http://www.exblog.org/?play=1", "elliott", "默许分类", "描写呀描写。", "撑持和该项(item)有关的媒体对象", "独一与该项(item)接洽在一同的永世性链接", "2005-03-12", "该项(item)来自哪一个RSS 频道,当把项(item)聚合在一同时十分有效"); $rss2gen->addItem("item2", "item2's description"); $rss2gen->addItem("item3"); $rss2gen->builder(); //兼容老版本中办法 //$rss2gen->buildRssFeed(); */实现固定数量的几张图片的上传;再如调试软件ZendStudio的使用,看了很多次老师的应用,但总感觉用的不顺手,不懂那么多的数据值,到底哪一个才是真正的问题所在;还有如数据库语句的封装,我只会用简单的函数来进行封装。

深爱那片海 发表于 2015-2-4 09:50:09

为了以后维护的方便最好是代码上都加上注释,“予人方便,自己方便”。此外开发文档什么的最好都弄齐全。我觉得这是程序员必备的素质。虽然会消耗点很多的时间。但是确实是非常有必要的。

冷月葬花魂 发表于 2015-2-6 20:16:29

爱上php,他也会爱上你。

活着的死人 发表于 2015-2-18 12:58:01

没接触过框架的人,也不用害怕,其实框架就是一种命名规范及插件,学会一个框架其余的框架都很好上手的。

蒙在股里 发表于 2015-3-1 10:53:56

有位前辈曾经跟我说过,phper 至少要掌握200个函数 编起程序来才能顺畅点,那些不熟悉的函数记不住也要一拿手册就能找到。所以建议新手们没事就看看php的手册(至少array函数和string函数是要记牢的)。

若相依 发表于 2015-3-10 14:55:43

当留言板完成的时候,下步可以把做1个单人的blog程序,做为目标,

小妖女 发表于 2015-3-10 16:55:39

多看优秀程序员编写的代码,仔细理解他们解决问题的方法,对自身有很大的帮助。

透明 发表于 2015-3-17 03:10:35

在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。

谁可相欹 发表于 2015-3-22 20:27:42

建议加几个专业的phper的群,当然啦需要说话的人多,一处一点问题能有人回答你的,当然啦要让人回答你的问题,平时就得躲在里面聊天,大家混熟啦,愿意回答你问题的人自然就多啦。

若天明 发表于 2015-3-22 22:10:28

php里的数组为空的时候是不能拿来遍历的;(这个有点低级啊,不过我刚被这个边界问题墨迹了好长一会)

第二个灵魂 发表于 2015-3-23 07:57:43

不禁又想起那些说php是草根语言的人,为什么认得差距这么大呢。

山那边是海 发表于 2015-3-28 07:17:26

在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。

精灵巫婆 发表于 2015-4-5 04:45:15

最后祝愿,php会给你带来快乐的同时 你也会给他带来快乐。

灵魂腐蚀 发表于 2015-4-10 09:18:58

使用zendstdio 写代码的的时候,把tab 的缩进设置成4个空格是很有必要的

变相怪杰 发表于 2015-4-11 10:19:56

找到的的资料很多都是在论坛里的,需要注册,所以我一般没到一个论坛都注册一个id,所有的id都注册成一样的,这样下次再进来的时候就不用重复注册啦。当然有些论坛的某些资料是需要的付费的。

柔情似水 发表于 2015-4-25 12:54:36

至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。

不帅 发表于 2015-5-1 17:51:15

遇到出错的时候,我经常把错误信息直接复制到 google的搜索栏,一般情况都是能搜到结果的,不过有时候会搜出来一大片英文的出来,这时候就得过滤一下,吧中文的弄出来,挨着式方法。

仓酷云 发表于 2015-6-12 11:43:49

首先我是坚决反对新手上来就用框架的,因为对底层的东西一点都不了解,造成知识上的真空,会对以后的发展不利。我的观点上手了解下框架就好,代码还是手写。当然啦如果是位别的编程语言的高手的话,这个就另当别论啦。

莫相离 发表于 2015-6-24 10:32:36

如果你可以写完像留言板这样的程序,那么你可以去一些别人的代码了,

分手快乐 发表于 2015-6-24 18:37:59

小鸟是第一次发帖(我习惯潜水的(*^__^*) 嘻嘻……),有错误之处还请大家批评指正,另外,前些日子听人说有高手能用php写驱动程序,真是学无止境,人外有人,天外有天。
页: [1]
查看完整版本: PHP网页设计rss2生成类