本文将讨论PHP网站中的RSS内容更新,对RSS和ATOM的原理不做详细描述。我们知道RSS新闻订阅在新闻网站中越来越受欢迎,RSS搜索引擎也在大浪淘沙后逐步沉淀于几家知名网站, RSS 新闻阅读器的开发市场角逐走入视线。日前Bakbone It Group的同仁在
使用PHP进行RSS聚合开发时总结了以下内容,供参考。
从表面上看,静态和动态网页中,RSS均有较好的表现。事实上如果静态生成RSS,无论从易用性还是经济性角度看都不符合现实需求。所以驱动RSS内容更新,动态生成RSS才是网站所需要的RSS聚合功能。
无论使用哪种语言动态生成RSS内容更新,其原理都遵循“三文件生成”原则,即文件头、文件内容、文件尾生成。文件头主要是一些声明、频道开启(channel)和网站描述,文件尾主要是关闭频道和RSS标签,而文件中则通过循环动态生成item。下面给一个动态生成RSS的PHP例子。
文件头
header("Content-type: application/xml");
echo "<?xml version=\"1.0\" encoding=\"UTF-8\"". "?". ">\n";
echo "<?xml-stylesheet type =\"text/css\" href=\" css.css\"". "?". ">\n"; // 指定你的css
echo "<rss version=\"2.0\">\n";
echo "<channel>\n";
// Required channel fields
echo "\t<title></title>\n"; // 设定网站Title
echo "\t<link> </link>\n"; // 设定网址
echo "\t<description></description>\n"; //设定网站描述
echo "\t<copyright></copyright>\n"; // 设定版权信息
echo "\t<managingEditor></managingEditor>\n"; // 设置管理员
echo "\t<language>zh-cn</language>\n"; // 设定语言
echo "\t<docs> </docs>\n"; // 设定首页页面
echo "\t<generator></generator>\n";
echo "\t <ttl>5</ttl>\n";
文件内容
这部分的聚合更新主要原理是通过sql将要参加RSS的记录读入一个数组。然后通过while 循环动态生成item。
while()
{
echo "\t<item>\n";
echo "\t<title></title>\n"; // 链接Title
echo "\t\t<link></link>\n"; // 插入链接页
echo "\t<description></ description >\n"; // 描述,注意此处可能需要截取文章内容,如果要进行字符过滤还需要echo "\t<description><![CDATA[ " . strip_tags($content) . "]]></description>\n";
echo "\t\t<category></category>\n"; // 设定分类
echo "\t\t<auther></auther>\n"; // 设定作者,注意格式
echo "\t<pubDate></pubDate>\n"; // 注意格式
echo "\t</item>\n";}
文件尾
echo "\t</channel>\n"; // 关闭频道
echo "\t</rss>\n"; // 关闭RSS