rss 聚合最近非常流行,因此至少对 rss 及其工作方式有所了解是一名 php 开发人员的迫切需要。本文介绍了 rss 基础知识、rss 众多用途中的一些用途、如何使用 php 从数据库创建 rss 提要,以及如何使用 xml_rss 模块读取现有 rss 提要并将其转换为 html。
RSS 聚合是最常见的 TLA(三字母缩写词)之一。RSS 作为缩写词具有多种含义,但是当前的标准含义是:真正简单的聚合。这是对这一极为常见、极为有用的标准的最新解释。
回想 Internet 早期,一个称为 Pointcast 的软件将数据 推送 到用户计算机上的屏幕保护应用程序上,来提供各种新闻更新。最终,浏览器开发商(例如 Netscape 和 Microsoft)创建了类似这种非常流行的服务的东西。Netscape 开发了接受程度最高的变体,此变体后来被发布到 Internet 开发环境中,并最终发展成了现在的 RSS。
RSS 将最近更新的信息分发给许多接收者,非常类似广播系统。如果您拥有大量的用户,那么 RSS 提要就像灯塔一样吸引您的用户回来查看更新。因为 RSS 提供了一种急需的维持用户注意力的方法,所以 RSS 越来越流行并为越来越多的内容提供者所使用就没什么好奇怪的了。
此图标是表示一个站点针对内容更新提供 RSS 服务的标准图标。图标中的曲线代表无线电波,象征着 RSS 提要的广播本质。
立即学习“PHP免费学习笔记(深入)”;
相当多的应用程序(其中许多是免费的)能够阅读 RSS 提要,其中许多允许用户聚合提要。聚合特性甚至允许用户进一步改进所收到内容的数量和性质。每种阅读器都拥有不同的特性,旨在帮助管理来自 Internet 的难以置信的信息量。
Mozilla 公司的 Thunderbird 和 Firefox、Microsoft 公司的 Internet Explorer 7 和即将推出的 Office 版本以及许多其他产品是最接近您的搜索引擎的一些例子。在这么多种获取和阅读提要的方法中,您应该可以找到适合您的方法。当然,除非您是一位眼光挑剔的软件开发人员,希望编写您自己的程序!本文马上就要对此进行介绍!
您的站点包含您希望公布给大众的内容,这是您将内容发布到 Internet 的首要原因。如果很多用户知道您的站点和内容,他们会每天回来查看更新吗?恐怕不会。在您经常访问的站点中,您会每天访问它们来检查更新吗?恐怕不会。这就是 RSS 产生的原因。
对于您的用户来说,RSS 可能是一个巨大的获益,当他们认为您的站点上列出的观点或新闻有价值时尤其如此。用户无需频繁返回您的站点,即可准确了解您进行的更新或添加的内容,从而使用户能够节省时间和精力,同时也不会错过任何更新!
如果您整合 RSS 提要来支持您自己站点的内容聚合,那么生成内容不是问题。如果您从提要中拉出数据并将其包括在您的站点中,那么只需很少的时间投资就能为您的站点添加大量的内容。
我个人喜欢使用 RSS 来收集来自不同站点(例如 Craigslist (www.craigslist.org))的经过过滤的结果的提要。我使用的一个小技巧是将其用于购买二手电子产品。您可以设置一个站点搜索,然后 RSS 结果页面。如果您设置了一个搜索某个价格范围内的照相机的提要,那么当有人发布在您定的价格范围内的照相机销售信息时,您就会在您的 RSS 提要中看到它!如果您想成为第一个竞价者,这会为您提供巨大的优势!
RSS 标准定义和包含提要的内容。这些提要可能来自任何定义为 Internet 文档的数据源,实际上是由链接清单及其描述构成的。
请查看下面 RSS 格式,它使用了一个来自 NASA "Liftoff News" 提要的示例文档。
<?xml version="1.0"?>
<rss version="2.0">
<channel>
<title>Liftoff News</title>
<link>http://liftoff.msfc.nasa.gov/</link>
<description>Liftoff to Space Exploration.</description>
<language>en-us</language>
<pubDate>Tue, 10 Jun 2003 04:00:00 GMT</pubDate>
<lastBuildDate>Tue, 10 Jun 2003 09:41:01 GMT</lastBuildDate>
<docs>http://blogs.law.harvard.edu/tech/rss</docs>
<generator>Weblog Editor 2.0</generator>
<managingEditor>editor@example.com</managingEditor>
<webMaster>webmaster@example.com</webMaster>
<item>
<title>Star City</title>
<link>http://liftoff.msfc.nasa.gov/news/2003/news-starcity.asp</link>
<description>How do Americans get ready to work with Russians aboard the
International Space Station? They take a crash course in culture, language
and protocol at Russia's Star City.</description>
<pubDate>Tue, 03 Jun 2003 09:39:21 GMT</pubDate>
<guid>http://liftoff.msfc.nasa.gov/2003/06/03.html#item573</guid>
</item>
<item>
<title>Space Exploration</title>
<link>http://liftoff.msfc.nasa.gov/</link>
<description>Sky watchers in Europe, Asia, and parts of Alaska and Canada
will experience a partial eclipse of the Sun on Saturday, May 31st.</description>
<pubDate>Fri, 30 May 2003 11:06:42 GMT</pubDate>
<guid>http://liftoff.msfc.nasa.gov/2003/05/30.html#item572</guid>
</item>
<item>
<title>The Engine That Does More</title>
<link>http://liftoff.msfc.nasa.gov/news/2003/news-VASIMR.asp</link>
<description>Before man travels to Mars, NASA hopes to design new engines
that will let us fly through the Solar System more quickly. The proposed
VASIMR engine would do that.</description>
<pubDate>Tue, 27 May 2003 08:37:32 GMT</pubDate>
<guid>http://liftoff.msfc.nasa.gov/2003/05/27.html#item571</guid>
</item>
<item>
<title>Astronauts' Dirty Laundry</title>
<link>http://liftoff.msfc.nasa.gov/news/2003/news-laundry.asp</link>
<description>Compared to earlier spacecraft, the International Space
Station has many luxuries, but laundry facilities are not one of them.
Instead, astronauts have other options.</description>
<pubDate>Tue, 20 May 2003 08:56:02 GMT</pubDate>
<guid>http://liftoff.msfc.nasa.gov/2003/05/20.html#item570</guid>
</item>
</channel>
</rss>
XML 格式的文档的第一个子对象是
通道能够包含的项目数量不受限制。ITEM 元素的全部元素都是可选的,然而,至少需要一个标题或描述来验证元素。这些元素是:title、link、description、author、category、comments、enclosure、guide、pubDate和source。
本文假设您已经具有一些使用 PHP 的经验,并能够使用函数来传递变量并返回结果。PHP 拥有许多能够迅速处理应用程序内外的 XML 的函数。
首先您会希望从本地存储的数据源(一个内容管理系统、博客或任何符合 Internet 文档格式的内容)获取信息,并将其作为提要发布给您的用户。您需要获取此数据、将其格式化为 RSS 对象,然后将其提供给需要它的请求。
如果您的站点的某些部分需要额外的内容,您无需满世界地为您的站点寻找额外的内容文档,而是可以利用已经准备好的大量 RSS 提要的优势。您可使用 XML_RSS 来为您的站点获取和处理这些提要。
XML_RSS() 是一个 PEAR 软件包,用于帮助您更轻松地完成更复杂的任务 —— 解释 XML RSS 文件。PEAR 是 PHP 函数的开源库,它可免费使用并且其开发工作仍在继续。您可能已经在安装 PHP 时安装了 PEAR,但是您可能仍需为本文安装它。XML_RSS() 仅仅是一个函数,它在已知 RSS 提要的位置时,将此提要的 XML 加载到一个阵列,从而为其在您的 PHP 应用程序中的使用做好准备。此阵列的元素将具有根据被读取的 RSS 文件的元素和属性命名的键。
既然您了解了什么是 RSS 数据格式,您就可以查看您希望发布的数据,并将其转换为 RSS 格式。幸好 PHP 拥有一些功能强大的 RSS 和 XML 处理特性,这些特性可加速您的开发。和许多通用的 Web 标准一样,PHP 拥有许多功能强大的函数,可在此应用程序中使用它们。
请注意以下说明:1、本程序允许任何人免费使用。2、本程序采用PHP+MYSQL架构编写。并且经过ZEND加密,所以运行环境需要有ZEND引擎支持。3、需要售后服务的,请与本作者联系,联系方式见下方。4、本程序还可以与您的网站想整合,可以实现用户在线服务功能,可以让客户管理自己的信息,可以查询自己的订单状况。以及返点信息等相关客户利益的信息。这个功能可提高客户的向心度。安装方法:1、解压本系统,放在
0
在本文中,您将使用 "" 将数据从数据库中拉出,并将其格式化为 RSS 提要。您将对它进行设置,以便无论何时调用此 RSS 提要,它都能查找您的数据集中新增的内容,并为请求者返回新的 RSS。
提要可来自您的站点中的任何数据源,但是最终您需要确保其中包含足够的数据,以便接收 RSS 提要的人能够使用此数据。至少需要 URL 名称和描述。您的站点上发布的任何数据均可被转换为提要。
您将使用 PHP 来连接 Web 应用程序数据库、拉出更新的信息,并将其格式化为 XML RSS 文档。
假设您选择了一个数据库,您用正常方式创建一个连接,并生成一个页面以适合用户阅读的方式显示 XML 的布局。
既然您已经在您自己的代码中很好地格式化了这些数据,您就需要确保正确地发布这些数据,以便当用户将您的 URL 输入阅读器时,能够获得他们需要的 XML RSS 提要。
<?php
$database = "nameofthedatabase";
$dbconnect = mysql_pconnect(localhost, dbuser, dbpassword);
mysql_select_db($database, $dbconnect);
$query = "select link, headline, description from `headlines` limit 15";
$result = mysql_query($query, $dbconnect);
while ($line = mysql_fetch_assoc($result))
{
$return[] = $line;
}
$now = date("D, d M Y H:i:s T");
$output = "<?xml version="1.0"?>
<rss version="2.0">
<channel>
<title>Our Demo RSS</title>
<link>http://www.tracypeterson.com/RSS/RSS.php</link>
<description>A Test RSS</description>
<language>en-us</language>
<pubDate>$now</pubDate>
<lastBuildDate>$now</lastBuildDate>
<docs>http://someurl.com</docs>
<managingEditor>you@youremail.com</managingEditor>
<webMaster>you@youremail.com</webMaster>
";
foreach ($return as $line)
{
$output .= "<item><title>".htmlentities($line['headline'])."</title>
<link>".htmlentities($line['link'])."</link>
<description>".htmlentities(strip_tags($line['description']))."</description>
</item>";
}
$output .= "</channel></rss>";
echo $output;
?>
因此,让我们逐步实现此目的。首先,您设置一个到本地数据库的数据库连接对象。在此数据库中有一个具有包含标题、链接和描述字段的记录的表,您将请求把这些内容放入您的 XML 响应中。您使用 MYSQL_QUERY() 对您的表执行 SQL 查询,然后您使用 WHILE 重新格式化结果来预排将得到的对象,并将数据重新格式化为新的简单阵列。
当新的阵列准备好之后,您就可以开始使用 $output 变量构建 XML 文件,通过为每个返回的响应遍历一次 $line 阵列的方式附加新的元素。这不应该占用太多的时间,因为在您的 SQL 语句中,您将响应限制设为 15。为了将此代码片段用作起始构建块,您需要替换虚拟链接、数据库名称和登录信息来反映您自己的环境。
此脚本被执行之后,您会得到一个非常干净的 RSS 文件输出,类似于清单 3。
<?xml version="1.0"?>
<rss version="0.97">
<channel>
<title>Our Demo RSS</title>
<link>http://www.tracypeterson.com/RSS/RSS.php</link>
<description>A Test RSS</description>
<language>en-us</language>
<pubDate>Mon, 13 Nov 2006 22:46:06 PST</pubDate>
<lastBuildDate>Mon, 13 Nov 2006 22:46:06 PST</lastBuildDate>
<docs>http://someurl.com</docs>
<managingEditor>you@youremail.com</managingEditor>
<webMaster>you@youremail.com</webMaster>
<item rdf:about="http://www.tracypeterson.com/">
<title>This is Tracy's Web Page!</title>
<link>http://www.tracypeterson.com/</link>
<description>This is a demonstration of how to get PHP to work for
your RSS feed.</description>
</item><item rdf:about="http://www.tracypeterson.com">
<title>This is Tracy's site again!</title>
<link>http://www.tracypeterson.com</link>
<description>Again, this is a demonstration of the power of PHP
coupled with RSS.</description>
</item></channel></rss>
现在任何人都可以通过输入到 RSS.php 的 URL,加载包含您的全部更新的新 RSS 文件了!
您将使用 XML_RSS() 函数将 RSS 提要导入到 PHP 脚本中,以便使其像任何阵列一样准备就绪。就像对数据库的查询一样,您将拥有一个准备好在需要时即可使用的阵列。
在本案例中,您将连接到 RSS.php 并加载一个副本,然后在无序清单中显示它。
<?php
require_once "XML/RSS.php";
$rss =& new XML_RSS("http://www.tracypeterson.com/RSS/RSS.php");
$rss->parse();
echo "<h1>Headlines from <a
href="http://www.tracypeterson.com/RSS/RSS.php">Tracy
Peterson's Site</a></h1>n"; echo "<ul>n";
foreach ($rss->getItems() as $item) {
echo "<li><a href="" . $item['link'] . "">" . $item['title'] .
"</a></li>n";
}
echo "</ul>n";
?>
此示例直接来自 PEAR 手册,我使用它是因为它非常简练。让我们逐行查看它来看看它是否仅使用了 XML_RSS() 类、构造器和 parse()提供的几个方法。解析操作仅将输出作为我之前提到的阵列呈现。
首先,您使用 require_once() 函数来从 PEAR 安装中加载 RSS.php 文件。如果正确设置了 PEAR 并安装了 XML_RSS ,那么它将正确地找到此引用文件,然后 XML_RSS 对象就准备好供您使用了。接下来,您创建一个名为 $rss 的新对象,此对象是将提要的 URL 传递到您的 XML_RSS 构造器的结果。
您仅使用 parse() 方法来返回 RSS 提要中的值。第一个 echo 行开始设置用于使 RSS 提要能够被用户阅读的基本 HTML。在本案例中,您声明此无序清单是来自我的站点的标题的清单!
foreach() 语句通过将 getItems() 方法用作新的阵列 $items,从解析的提要中获取每个项目元素。每个阵列元素根据包含它们的实际 XML 标签命名。在本案例中,您仅使用了链接和标题,一会您将添加对它们的描述。每处理一次 foreach 循环,就会移动到下一个元素,直到整个 RSS 提要以此方式全部显示出来。
现在,将描述添加到每个显示的结果中。
下面代码行添加到 foreach() 循环中。
foreach ($rss->getItems() as $item) {
echo "<li>" . $item['title'] .
"</li><br>";
echo $item['description'] . "<br><br>n"; }
您只需向无序清单中添加一个换行符和描述行。
总的说来,Internet 才刚刚开始意识到它拥有的难以置信的潜力。通过 RSS 提供的提高了的可访问性,您现在能够简化使您的用户保持同步的过程。您能够及时将更新通知到用户,而无需用户花费时间来检查您是否添加了新信息。
您刚刚探索了 RSS 格式的标准,以及如何创建提要、接收提要并将其转换为可用的 HTML。现在您已经准备好在更大型的应用程序中使用这些技能了。
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号