まず取得対象のブログURLから、RSSのURLを見つける
楽天ブログのRSSのURLの作り方
- URLの「
plaza
」の前に「api.
」を追加 - 「
co.jp
」を「ne.jp
」に変更 - URLの最後に「
/rss
」を追加
例えばRakutenブックスのブログの場合
ブログのURL
https://plaza.rakuten.co.jp/infobooksRSSのURL
https://api.plaza.rakuten.ne.jp/infobooks/rss
になる。アクセスしてみるとXMLがズラ〜っと表示されるはず
https://api.plaza.rakuten.ne.jp/infobooks/rss
RSSのURLを使用してPHPで取得 & 表示処理を実装
<?php
date_default_timezone_set('Asia/Tokyo');
// RSSのURL
$url = "https://api.plaza.rakuten.ne.jp/infobooks/rss";
// RSSの内容を読み込む (https://php.net/manual/en/function.simplexml-load-file.php)
$rss = simplexml_load_file($url);
// 表示する件数
$max = 5;
// 表示数カウント
$i = 0;
// 読み込み成功した場合
if ($rss) {
// foreachで1つずつ取り出して表示
foreach ($rss->item as $item) {
if ($max <= $i) {
// 表示する件数を超えた場合は終了
break;
}
// 日付
$date = date('Y年m月d日', strtotime($item->children("http://purl.org/dc/elements/1.1/")->date));
// ブログ詳細URL
$link = $item->link;
// ブログタイトル
$title = $item->title;
// 表示数カウント更新
$i++;
?>
<ul>
<li>
<a href="<?php echo $link ?>" target="_blank" rel="noopener noreferrer">
<?php echo $date ?> <br>
<?php echo $title ?>
</a>
</li>
</ul>
<?php
}
}
ポイント
simplexml_load_file
メソッドを使用してXMLをオブジェクト型式で読み込む
(https://www.php.net/manual/ja/function.simplexml-load-file.php)foreach ($rss->item as $item)
でブログ情報を1つずつ取り出す- 各情報を表示する
取得できる情報
$rss->title
: ブログホームタイトル$rss->link
: ブログホームURL$rss->description
: ブログホーム説明$rss->item
: ブログ一覧 (配列)$rss->item[0]->title
: ブログ記事タイトル$rss->item[0]->link
: ブログ記事リンク$rss->item[0]->description
: ブログ記事詳細- 日付に関しては楽天がRSS1.0なので下記コードで取得する
date('Y年m月d日', strtotime($item->children("http://purl.org/dc/elements/1.1/")->date))
htmlファイルなどで使用する場合
PHPではなくhtmlのページで表示したい場合、PHPファイルを作成してJavaScriptで読み込む
手順
- RSS読み込み用のPHPファイルを作成 (
rss.php
とする) - htmlファイルに
rss.php
を呼び出す非同期処理をJavascript
で実装する
- rss.php
<?php
date_default_timezone_set('Asia/Tokyo');
// RSSのURL
$url = "https://api.plaza.rakuten.ne.jp/infobooks/rss";
// RSSの内容を読み込む (https://php.net/manual/en/function.simplexml-load-file.php)
$rss = simplexml_load_file($url);
// 取得する件数
$max = 5;
$i = 0;
// JSに返すレスポンス
$response = '';
// 読み込み成功した場合
if ($rss) {
// foreachで1つずつ取り出して表示
foreach ($rss->item as $item) {
if ($max <= $i) {
// 取得件数を超えた場合は表示終了
break;
}
// 日付
$date = date('Y年m月d日', strtotime($item->children("http://purl.org/dc/elements/1.1/")->date));
// ブログ詳細URL
$link = $item->link;
// ブログタイトル
$title = $item->title;
// indexを更新
$i++;
$response .= "<li>";
$response .= "<a href='{$link}' target='_blank' rel='noopener noreferrer'>";
$response .= "{$date} <br> {$title}";
$response .= '</li>';
}
}
// 生成したHTMLパーツを返す
echo $response;
- index.html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
</head>
<body>
<section class="blogs">
<ul><!-- ⭐️ ここに動的生成されます --></ul>
</section>
</body>
<!-- jQueryを使用 -->
<script
src="https://code.jquery.com/jquery-3.5.1.js"
integrity="sha256-QWo7LDvxbWT2tbbQ97B53yJnYU3WhH/C8ycbRAkjPDc="
crossorigin="anonymous"></script>
<script type="text/javascript">
$(function(){
// ⭐️ ここで取得 & 反映する
$.get('rss.php',function(data){
$('.blogs ul').html(data)
})
})
</script>
PHPにて楽天ブログの情報をRSSで取得して表示した時のメモ