PHP

与RSS相关的PHP代码简述

本文仅对经过初步比较和分析的较好的与RSS相关的PHP代码进行简述。

1. RSS Aggregator程序(RSS阅读器程序)

在sf.net上该类软件有两个选择,一是lilina,二是zfeeder。

zfeeder在中文处理上则存在严重bug,不能正确处理中文。zfeeder的作者是老外,也试图解决中文处理问题,但是由于缺乏必要的测试环境,它提供的语言补丁是失败的。并且,当前最新版本的zfeeder的配置文件设定程序也存在严重bug,配置文件设定程序会输出无效的配置文件(至少在Windows平台上是这样的)。

相对而言,lilina至少在多字节语言(包括中文)处理上更合理。并且根据sf.net的项目活跃指数排名,lilina排名比zfeeder靠前。

另外,phpclass.org提供一个PHP类RSS_feed,但该代码存在一个严重bug:不支持中文。

2. PHP写的Blog和RSS集成系统

目前仅serendipity一枝独放,但须数据库支持。

[注:可以猜测目前有很多PHP写的Blog系统。在Blog上添加RSS服务应该是颇为轻松的一件事情。因此可以认为除了serendipity,还有一些别的Blog程序可供选择(因为你可以在这些Blog系统上自行增加RSS服务)。2005-03-24 11:53:42]

3. RSS生成程序

在phpclasses.org网站上,有大约8到10个左右可供选择的该类程序。但是排除那些2002年前开发的程序,再排除那些仅支持RSS v1.0以下(含v1.0)的程序,则仅有2个程序可供参考:RSS Builder和Easy RSS。

RSS Builder支持RSS v0.91、v1.0和v2.0,支持Dublin核心和SY模块(我也不懂这两个名词)但类代码太长(1721行)。

Easy RSS仅支持RSS v2.0,无需PHP的XML函数库支持,使用正则表达式读取、匹配RSS文件,能够读取或创建RSS文件。本站极有可能采用该PHP类。

参考资料:

lilina: http://sourceforge.net/projects/lilina/
zfeeder: http://sourceforge.net/projects/zvonnews/
RSS_feed: http://phpclasses.pathtech.org/browse/package/1299.html
serendipity: http://sourceforge.net/projects/php-blog/
RSS Builder: http://phpclasses.pathtech.org/browse/package/1156.html
Easy RSS: http://phpclasses.pathtech.org/browse/package/1820.html

[补充说明1] 凌晨的时候Ben在MSN上问我为什么在主页上不用RSS,基于以前我对RSS肤浅的理解我说用不着,没必要。经过他的进一步解释我忽然发现,RSS就是一直以来我期望得到的一种网络技术:不用浏览每个我常去的网站,却能知道每个网站的最新更新情况。于是花了些时间,研究了一下和RSS相关的PHP技术。2005-03-19 02:09:32

[补充说明2] “RSS是英文Rich Site Summary(丰富站点摘要)或者Really Simple Syndication(真正简单的整合)的首字母缩写,是一种用于共享新闻标题和其他Web内容的数据交换规范。”本站将在4月底前提供有关本站日常更新信息的RSS。之所以不能马上提供本站的RSS是因为我还需要一些时间考虑RSS和本站其他资源的协调问题。 2005-03-20 00:50:05

[补充说明3] 本站目前已提供关于“我的感想”和“留言本”的RSS服务。 2005-03-25 14:48:18

类别:

写一本梦想中的书

我以前在国内做程序员的时候,知道好的中文技术资料比较匮乏,也知道很多技术人员不喜欢阅读英文的技术资料。但是技术的进一步提高要求程序员必须直接阅读英文资料才行,因为英文资料往往更权威、更全面。我常常阅读到一些国内程序员因为个人主观原因通常无法接触到的精彩的技术文章,也常常为这些技术资料在中文世界被埋没感到惋惜。

前几天调试一份叫做GeSHi的源代码开放的语法加亮软件,对PHP中的mbstring模块(多字节处理模块)有一些了解和研究。在网上查了一下,目前还没有专门介绍PHP多字节处理的网文,因此有心思想写一下这方面的文章。但并没有动笔,因为觉得花费的时间对自己来讲不值得。一则写一份严谨的没有bug的文章不是三两下就能完成的,二则写这篇文章所得到的成就感不足。

昨天上网闲逛的时候,拜访了一个专门研究PHP安全的网站,读了2篇比较精彩的文章,感觉比较激动。很想把这样精彩的文章介绍到中文世界中。

于是忽然想到,为什么我不把我对PHP的了解好好整理整理,写一本有价值的PHP进阶编程的书呢?这本书应该综合了好些PHP最新的、最前沿的、最成熟的技术,应该让PHP入门者读了很有收获,也应该让PHP专业人士读了之后从某些章节得到启发。总之,这是一本与时俱进、紧密联系PHP最新发展、让PHP程序员在技术上进一步提高并在视野上进一步拓展的书籍。

写这样的一本书,涉及到的一点就是要从网上和别人的书籍中摘取相当多的资源做一些重新编写的工作,涉及到版权方面的问题。但我写这本技术书跟国内普遍流行的翻译技术书的做法不一样。国内好些翻译计算机书籍出版者的做法就是直接拿来一本外文畅销计算技术,翻译一遍后冠以中文翻译者的名字就发表了,作者(翻译者)也许都不了解他所翻译的书籍的技术。而我自己本身就是数年的PHP程序员,对于这个领域有着比很多PHP程序员更深入一点的研究,因此我会根据自己的理解、经验更好地组织、编写书籍内容。我并不会不负责任地简单地翻译一本自己都不知所然的外文书籍交付给读者,我会通过不同渠道搜集、研究相关资料再整理成书籍内容。总之,相对于大多数其它PHP中文书籍,我写的这本书应该是一本更有价值的技术书。

以上是我的梦想,梦想总是跟现实有差距的,因此目前为止上文提到的“我写的这本书”都还是空头支票。首要解决的就是版权问题。

今天下午去见老板的时候,顺便问了他一个问题,“如果我要摘录网上的一段文字作为我的文章的内容,我该怎么做?”他明确地告诉我,“你必须从作者处得到授权,并注明出处。不过你也可以技巧化地改写他文章的内容。”我考虑了一下,首先,我不能为了写一本书而违反版权;其次,如果我从每个作者处得到授权并注明出处,又太麻烦;最后,这样一来,我要更多的时间,而我好像没有那么多时间。因此,暂时放弃了写这本我梦想中的书的念头。

不过老板的话也给我敲了一个警钟,刚才把本站“我的文章”和“我的感想”中的相关内容检查了一遍,关闭了所有可能涉及到版权问题的内容,并且将在“常见问题”增加版权解释。

本站将不再讨论涉及版权侵犯的话题,我也将好好研究有关版权问题,(尽量)不在社会交往中出现公开侵犯版权的情况。

类别:

关于GeSHi处理多字节编码时的bug

GeSHi很可能是迄今为止最出色的PHP源代码加亮程序,本站就采用它来共享源代码资源。

非常遗憾的是GeSHi有一个很严重的bug:对于含有多字节编码的字符串的源代码不能正常显示。访客们也可以看到本站共享的源代码相当部分处于乱码状态,因为源代码里面含有中文(在电脑里,中文需要多字节进行编码)。

我知道,这不是一个严重的bug,因为根据我的使用经验来看,PHP在多字节处理方面很棒。我也相信,GeSHi的这个bug也不难解决。只是虽然这个bug已经被提出来好几个月了,但是GeSHi的作者(老外)迄今为止都没有解决这个问题。没什么好奇怪的,谁叫这些老外只使用abcdefg,不使用中文呢。

今天晚上无所事事,夜里的时候终于决定好好看看GeSHi的源代码,调试、跟踪来看看。终于发现原因了:GeSHi使用了一些字符串处理函数,而这些函数只对单字节编码字符串有效,对多字节编码字符串无效。

解决方案似乎也就很显然了:把使用到的substr、strpos、strlen等函数根据具体情况换成mb_substr、mb_strpos、mb_strlen等函数就大体解决问题了。

随后发了份email给GeSHi的作者,相信不久这个bug就能得到妥善的解决的。

类别:

无标题 (4428)

PHP 5 Release Candidate 2 昨天发布了。从现在开始,写PHP应该因循PHP 5来写。PHP + MySQL这对黄金组合还只剩下一件可以期待的重要改进了:MySQL对于存储过程的完全支持。

标签:

类别:

无标题 (5511)

在php.net看了php 5对于面向对象编程的支持,的确是有很大很大的进步。 :D
http://www.php.net/zend-engine-2.php

标签:

类别:

无标题 (2119)

Good articles:
Make Your PHP Code Portable
http://martin.f2o.org/php/portable

Why You Should Disable PHP's session use_trans_sid
http://martin.f2o.org/php/session

标签:

类别:

页面