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() 函数会执行以下步骤:

  1. 检查是否有 RSS-feed 被选择
  2. 创建 XMLHttpRequest 对象
  3. 创建在服务器响应就绪时执行的函数
  4. 向服务器上的文件发送请求
  5. 请注意添加到 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 文件时,将发生:

  1. 检查哪个 RSS feed 被选中
  2. 创建一个新的 XML DOM 对象
  3. 在 xml 变量中加载 RSS 文档
  4. 从 channel 元素中提取并输出元素
  5. 从 item 元素中提取并输出元素

运行以上 PHP 范例,演示结果如下

关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.