PHP 実例 -AJAX RSS リーダー
RSS リーダーは RSS フィードを読むために使用されます。
AJAX RSS リーダー
次の実例では、RSS リーダーをデモンストレーションします。これにより、RSS のコンテンツが Web ページを更新することなく読み込まれます。
RSS フィードデータリスト...
実例解説 - HTML ページ
ユーザーが上のドロップダウンリストで RSS フィードを選択すると、"showRSS()" という名前の関数が実行されます。この関数は "onchange" イベントによってトリガーされます:
実例
<html>
<head>
<meta charset="utf-8">
<title>初心者チュートリアル(example.com)</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","getrss.php?q="+str,true);
xmlhttp.send();
}</script>
</head>
<body>
<form>
<select onchange="showRSS(this.value)">
<option value="">RSS フィードを選択してください:</option>
<option value="rss">RSS データを読み込む</option>
</select>
</form>
<br>
<div id="rssOutput">RSS フィードデータリスト...</div>
</body>
</html>
showRSS() 関数は次の手順を実行します:
- RSS フィードが選択されているかどうかを確認します
- XMLHttpRequest オブジェクトを作成します
- サーバーの応答準備完了時に実行される関数を作成します
- サーバー上のファイルにリクエストを送信します
- URL の末尾に追加されたパラメータ(q)(ドロップダウンリストの内容を含む)に注意してください
PHP ファイル
ファイルrss_demo.xml。
上記の JavaScript を介して呼び出されるサーバーページは、"getrss.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 フィードのリクエストが JavaScript から PHP ファイルに送信されると、次の処理が行われます:
- どの RSS フィードが選択されているかを確認します
- 新しい XML DOM オブジェクトを作成します
- xml 変数に RSS ドキュメントを読み込みます
- channel 要素から要素を抽出して出力します
- item 要素から要素を抽出して出力します