2006-07-08

如何用PHP输出RSS

前几天为实验室做了个简单的新闻公告,想顺便把最新的几个新闻用RSS输出.这样我自己就可以用bloglines订阅了,不用去实验室的网页,反正一直开着bloglines.

人真的是有惰性的, 习惯了用开源世界形形色色的类库,我第一个念头就是google一下PHP RSS这两个关键字,谁知道找了一圈还真的没有找到合适的.好不容易找到一个还是用来输出RSS 1.0 的,我要的是RSS 2.0.

无奈之下,我决定自己写,先看了一下RSS2.0的规范,然后开始参考WordPress的RSS输出写了一个.满怀信心的用Firefox去点击进去时,发现Firefox 根本不识别这个为XML文档.这才想起没有设置Content-type为text/xml.

加上以后Firefox提示RSS2.0格式错误,原来问题出在标签上,我做的是全文输出,但是实验室新闻里用到了html标签,也是说中有一些用来控制文本显示的html标签干扰了Firefox.

本能的反应就是得把这些html标签去掉,但是一时半会儿我也找不到能去掉html标签的PHP类库,所以只好狠心将留空了.反正看到有更新的标题,我自己去网站看好了,虽然有违我强烈要求RSS全文输出的初衷.去掉以后果然可以正常解析了.

今天突然想看看wordpress的RSS是怎么输出的,发现他在后面用了CDATA标签,我也就照猫画虎在我程序中给用上了,发现果然可以正常解析了.用google一搜才知道原来是这么回事.

现在我的RSS2.0输出完全正常了.这是源代码.rss2-php.txt

1 条评论:

小戴 说...

太棒了。
看了你的源码很有帮助。我也照猫画虎好了哈。