PHP - AJAX RSS Feed 示例

Hello, 對初學的編程者來說!今天,我們將踏上一段令人興奮的旅程,進入 PHP、AJAX 和 RSS 資訊源的世界。別擔心這些術語現在聽起來像是一堆字母湯——到了這個教學的結尾,你將會像專家一樣輕鬆應用它們!讓我們一起來深入學習吧!

PHP - AJAX RSS Feed Example

Really Simple Syndication (RSS)

在我們開始編程之前,讓我們先來了解一下 RSS 是什麼。

RSS 的全稱是 Really Simple Syndication。它就像是一種網絡上的新聞派送服務。想像一下,你有一個喜歡的新聞網站,但你不想每天訪問它來查看是否有新文章。這就是 RSS 派上用場的地方!

RSS 資訊源是一種特殊的文件,網站用它來以標準化的格式發布最新內容。這種格式允許其他程序(稱為 RSS 閱讀器)輕鬆地從多個網站抓取並在同一個地方顯示最新更新。

我們的專案:構建一個 RSS 資訊源閱讀器

今天,我們將使用 PHP 和 AJAX 構建一個簡單的 RSS 資訊源閱讀器。我們的專案將有兩個主要部分:

  1. 一個 HTML 頁面(index.html),用於顯示資訊源並包含 AJAX 代碼。
  2. 一個 PHP 腳本(rss.php),用於抓取和分析 RSS 資訊源。

讓我們從 HTML 頁面開始。

Index.html

這裡是我們的 index.html 文件代碼:

<!DOCTYPE html>
<html lang="zh-tw">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>RSS 資訊源閱讀器</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$("#getFeed").click(function(){
$.ajax({
url: "rss.php",
type: "GET",
dataType: "json",
success: function(data){
var html = "<ul>";
$.each(data, function(index, item){
html += "<li><a href='" + item.link + "'>" + item.title + "</a></li>";
});
html += "</ul>";
$("#feedContent").html(html);
},
error: function(){
$("#feedContent").html("在抓取資訊源時發生錯誤。");
}
});
});
});
</script>
</head>
<body>
<h1>我的 RSS 資訊源閱讀器</h1>
<button id="getFeed">獲取最新資訊源</button>
<div id="feedContent"></div>
</body>
</html>

現在,讓我們來分解這段代碼:

  1. 我們從基本的 HTML 構架開始。
  2. <head> 標籤中,我們引入了 jQuery,這會讓我們的 AJAX 調用更簡單。
  3. 我們有一個當文檔準備好時運行的腳本。它將一個點擊事件附加到我們的 "獲取最新資訊源" 按鈕上。
  4. 當按鈕被點擊時,它會向我們的 PHP 腳本(rss.php)發起一個 AJAX 調用。
  5. 如果調用成功,它會從資訊源數據中創建一個未排序列表,並在 feedContent div 中顯示它。
  6. 如果發生錯誤,它會顯示一條錯誤消息。

rss.php

現在,讓我們創建我們的 PHP 腳本,它將抓取和分析 RSS 資訊源:

<?php
// 允許跨源請求
header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");

// RSS 資訊源 URL
$feedUrl = "http://rss.cnn.com/rss/edition.rss";

// 創建一個新的 DOMDocument 對象
$xmlDoc = new DOMDocument();

// 從 URL 加載 RSS 資訊源
$xmlDoc->load($feedUrl);

// 獲取所有的 <item> 過元素
$items = $xmlDoc->getElementsByTagName('item');

$feed = array();

// 遍歷每個 <item>
foreach ($items as $item) {
$title = $item->getElementsByTagName('title')->item(0)->nodeValue;
$link = $item->getElementsByTagName('link')->item(0)->nodeValue;

// 將這個項目添加到我們的資訊源數組中
$feed[] = array(
'title' => $title,
'link' => $link
);
}

// 將資訊源作為 JSON 輸出
echo json_encode($feed);
?>

讓我們來分解這個 PHP 腳本:

  1. 我們從設置允許跨源請求的頭部開始,並指定我們正在輸出 JSON。
  2. 我們定義了我們想要抓取的 RSS 資訊源的 URL(在這個例子中,是 CNN 的頂尖故事)。
  3. 我們創建了一個新的 DOMDocument 對象並使用它來加載 RSS 資訊源。
  4. 我們從資訊源中獲取所有的 <item> 過元素(每個 <item> 代表一個單獨的故事或文章)。
  5. 我們遍歷每個項目,提取標題和鏈接,並將它們添加到我們的 $feed 數組中。
  6. 最後,我們將我們的 $feed 數組編碼為 JSON 並輸出它。

它們是如何一起工作的

當你在瀏覽器中打開 index.html 時,你會看到一個 "獲取最新資訊源" 按鈕。當你點擊這個按鈕時:

  1. index.html 中的 JavaScript 發起一個 AJAX 調用到 rss.php。
  2. rss.php 抓取 RSS 資訊源,分析它,並以 JSON 格式返回數據。
  3. JavaScript 接收這個 JSON 數據,並使用它來在頁面上創建一個鏈接列表。

就这样!你刚刚使用 PHP 和 AJAX 创建了一个简单的 RSS 资讯源阅读器!

使用的方法

這裡是我們在這個專案中用到的主要方法列表:

方法 描述
$.ajax() jQuery 方法,用於执行 AJAX 请求
$.each() jQuery 方法,用於遍历数组或对象
DOMDocument::load() PHP 方法,用於從文件或 URL 加载 XML
getElementsByTagName() PHP 方法,用於通过标签名获取元素
json_encode() PHP 函数,用於将值编码为 JSON 格式

記住,編程就是關於練習和實驗。不要害怕修改這段代碼,嘗試不同的 RSS 資訊源,或者添加新功能。你玩得越多,你就會越了解所有這些是如何配合在一起的。

祝你好運,未來的技術大師們!

Credits: Image by storyset