RSSフィードのタイプにはRSSやATOMがあり、更にVer. 1.0と2.0とで記述方法がかわってくるので注意。
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
こんな感じでatomとか書いてあると思う。
jQueryやjsを使わずに、ライブラリの読み込みで実装。
表示件数を変更できるタイプで成功した記載方法は以下。
これはハフィントンポスト用の設定で、タイプはATOM。
各パラメータはxmlを見て随時変更すること。
entryだったりitemだったり、日付もpubDateなどとブログによって様々。
※2018年10月現在、ハフィントンポストは個別投稿者のRSS吐き出しをやめている模様。取得できません(泣)
<entry> //ここがブログによってはitemだったりする <title>取得する記事のタイトル</title> <link rel="alternate" type="text/html" href="記事のURL"/> <id> tag:何かのurl,2017:/theblog//00000 </id> <published>2017-04-03T10:34:20-04:00</published> //投稿した日付 <updated>2017-04-03T22:02:41-04:00</updated> //更新した日付 <summary> <![CDATA[ --------記事の内容----------------- ]]> </summary>
▼この記事をベースに色々と調べて組み合わせた。
・はまった箇所①
記事の表示件数の指定。以下を追加することで成功。
$num = 1;//表示させたい件数 $i=0; foreach( $atom->entry as $entry ) { if($i>=$num){ } else{ // 各エントリーの処理 $i++;
・はまった箇所②
表示はされたがリンクができていない。
↓リンクを取得できなかった記述
$link = $item->link ; // リンク
RSSのlinkタグのhrefの値の取得の仕方を参考に以下のように変更。
↓リンク取得に成功!
$link = $entry->link->attributes()->href; // リンク
【完成】
<?php // ライブラリの読み込み require_once "Feed.php" ; $feed = new Feed ; // フィードのURL $url = "http://feed" ; $atom = $feed->loadAtom( $url ) ; $num = 1;//表示させたい件数 $i=0; foreach( $atom->entry as $entry ) { if($i>=$num){ } else{ // 各エントリーの処理 $i++; $title = $entry->title ; // タイトル $link = $entry->link->attributes()->href; // リンク $timestamp = strtotime( $entry->published ) ; // 更新日時のUNIX TIMESTAMP $description = $entry->summary ; // 詳細 // 表示 echo '<p class="link_bnr"><a href="' . $link . '" >' . $title . '</a> (' . date( "Y/m/d H:i" , $timestamp ) . ')</p>' ; } } ?>
▼参考にした記事
ブログのRSSを読み込んで新着記事を表示!PHPを使ってみました