1.RSSの内容(例)
RSS(Rich Site Summary)とは
ウェブサイトやブログの更新情報を配信する仕組み
以下は河内長野市役所が「新着更新情報」として公開している内容
<rdf:RDF xmlns="http://purl.org/rss/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xml:lang="ja">
<channel rdf:about="">
<title>河内長野市役所RSS(新着更新情報)</title>
<link/>
<description>河内長野市役所からの情報をRSSで配信</description>
<dc:date>2024-04-07 00:00:00+09:00</dc:date>
<dc:creator/>
<dc:subject/>
<dc:rights>Copyright c Kawachinagano City. All Rights Reserved.</dc:rights>
<sy:updatePeriod>weekly</sy:updatePeriod>
<sy:updateFrequency>1</sy:updateFrequency>
<items>
<rdf:Seq>
<rdf:li rdf:resource="https://www.city.kawachinagano.lg.jp/soshiki/47/96528.html"/>
(途中省略)
</rdf:Seq>
</items>
</channel>
<!-- ENTRIES -->
<item rdf:about="https://www.city.kawachinagano.lg.jp/soshiki/47/96528.html">
<title>ミニバスケットボールで活躍</title>
<link>https://www.city.kawachinagano.lg.jp/soshiki/47/96528.html</link>
<description>ミニバスケットボールで活躍</description>
<dc:date>2024-04-07T00:00:00+09:00</dc:date>
<dc:subject>市民スポーツ課</dc:subject>
</item>
(途中省略)
<!-- /ENTRIES -->
</rdf:RDF>
2.RSSの読み込み(例)
XMLで構成されているので読み込んで10件だけ表示する
「SimpleXML」という拡張機能を使ってPHPで読み込む
<?php
$url = "http://www.city.kawachinagano.lg.jp/feed.xml?type=rss_2.0";
$data = "";
$cp = curl_init();
curl_setopt($cp, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($cp, CURLOPT_URL, $url);
curl_setopt($cp, CURLOPT_TIMEOUT, 60);
$data = curl_exec($cp);
curl_close($cp);
$rss = simplexml_load_string($data);
$i = 0;
if ($rss)
{
foreach ($rss->channel->item as $item)
{
/*
print_r ($item);
*/
$title = $item->title;
$link = $item->link;
$desc = $item->description;
$date = date("Y年n月j日(D)",strtotime($item->pubDate));
if (strlen($item->description) == 0)
{
$desc = " ";
}
$rsslines = "<a href=$link target='_blank' title=$title>$title</a>";
echo "<li>{$rsslines}</li><dd> {$desc}</dd><dd> {$date}</dd>\n<br>";
$i = $i +1;
if ($i >= 10)
{
break;
}
}
}
else
{
echo "<dt>市役所の更新結果を取得できていません<br />長引く場合には連絡をください:<br />$url</dt>\n";
}
?>
行番号 | 説明 |
4〜9 | 指定したURLの情報を取得する curl_init() セッションを初期化 curl_setopt 転送用オプションを指定する 実行結果を返す、取得するURL、制限時間 curl_exec 転送の実行 curl_close セッションの終了 |
11 | simplexml_load_string XML 文字列をオブジェクトに代入する |
17〜 | $rss->channel->item 階層に従って項目(item)を$itemに取り出す |
20 | print_r ($item) デバッグ用(項目の内容を確認する) |
22〜25 | $item-> 各々項目名で取り出す タイトル、リンク先URL、説明文、作成年月日 |
26〜29 | description 説明文が省略された場合への対処(後日判明) |
30〜31 | 出力用HTMLを用意する リンク先へLinkを張る、説明文を添える |
32〜36 | 10件表示したら終了 |
39〜 | 読み込み時の例外処理への対応 |