PHP AJAX RSS 阅读器
RSS 阅读器用于阅读 RSS Feed
接下来我们使用 PHP 和 AJAX 技术做一个 RSS 阅读器
PHP AJAX RSS 阅读器
我们先来看看我们要做的 RSS 阅读器长的什么样?
这个 RSS 小阅读器可以在不用刷新网页的情况下载入 RSS Feed 的内容
RSS Feed 数据列表...
RSS 阅读器
现在我们就来着手开发这个 RSS 小阅读器
1. 创建前端 HTML 页面
首先我们新建一个 php_ajax_rss_form.php
的文件,输入以下内容
在这个 HTML 页面中,当用户在下拉列表中选择某个 RSS-feed 时,会触发 onchange
事件执行名为 "showRSS()" 的函数
php_ajax_rss_form.php
<!DOCTYPE html> <meta charset="utf-8"> <title>RSS Feed 阅读器|简单编程(twle.cn)</title> <script> function showRSS(str) { if (str.length==0) { document.getElementById("rssOutput").innerHTML=""; return; } if (window.XMLHttpRequest) { // IE7+, Firefox, Chrome, Opera, Safari 浏览器执行代码 xmlhttp=new XMLHttpRequest(); } else { // IE6, IE5 浏览器执行代码 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { document.getElementById("rssOutput").innerHTML=xmlhttp.responseText; } } xmlhttp.open("GET","/php_ajax_rss.php?q="+str,true); xmlhttp.send(); } </script> <p>PHP 基础教程 - 简单教程(www.twle.cn)</p> <form> <select onchange="showRSS(this.value)"> <option value="">选择一个 RSS-feed:</option> <option value="rss">读取 RSS 数据</option> </select> </form> <br> <div id="rssOutput">RSS-feed 数据列表...</div>
showRSS() 函数会执行以下步骤:
- 检查是否有 RSS-feed 被选择
- 创建 XMLHttpRequest 对象
- 创建在服务器响应就绪时执行的函数
- 向服务器上的文件发送请求
- 请注意添加到 URL 末端的参数(q)(包含下拉列表的内容)
2. 后端数据处理
假设我们的 RSS 文件地址为 https://www.twle.cn/static/media/rss_demo.xml
我们的 RSS 阅读器的 HTML 页面通过 JavaScript 调用的服务器页面是名为 "php_ajax_rss.php" 的 PHP 文件
php_ajax_rss.php
<?php // rss 文件 $xml="rss_demo.xml"; $xmlDoc = new DOMDocument(); $xmlDoc->load($xml); // 从 "<channel>" 中读取元素 $channel=$xmlDoc->getElementsByTagName('channel')->item(0); $channel_title = $channel->getElementsByTagName('title') ->item(0)->childNodes->item(0)->nodeValue; $channel_link = $channel->getElementsByTagName('link') ->item(0)->childNodes->item(0)->nodeValue; $channel_desc = $channel->getElementsByTagName('description') ->item(0)->childNodes->item(0)->nodeValue; // 输出 "<channel>" 中的元素 echo("<p><a href='" . $channel_link . "'>" . $channel_title . "</a>"); echo("<br>"); echo($channel_desc . "</p>"); // 输出 "<item>" 中的元素 $x=$xmlDoc->getElementsByTagName('item'); for ($i=0; $i<=1; $i++) { $item_title=$x->item($i)->getElementsByTagName('title') ->item(0)->childNodes->item(0)->nodeValue; $item_link=$x->item($i)->getElementsByTagName('link') ->item(0)->childNodes->item(0)->nodeValue; $item_desc=$x->item($i)->getElementsByTagName('description') ->item(0)->childNodes->item(0)->nodeValue; echo ("<p><a href='" . $item_link . "'>" . $item_title . "</a>"); echo ("<br>"); echo ($item_desc . "</p>"); }
当 RSS feed 的请求从 JavaScript 发送到 PHP 文件时,将发生:
- 检查哪个 RSS feed 被选中
- 创建一个新的 XML DOM 对象
- 在 xml 变量中加载 RSS 文档
- 从 channel 元素中提取并输出元素
- 从 item 元素中提取并输出元素
运行以上 PHP 范例,演示结果如下