PHP(ピー・エイチ・ピー)

【PHP】RSSを読み込んで新着情報を表示

お客さんから、

ホームページに表示させている新着情報が表示されなくなった!

という報告がありました。

MT(Movable Type)でブログを作成していて、

サイトのトップページにブログの最新記事を5件を新着記事として表示させるようにしていたのですが、

その新着情報が何も表示されなくなっていました。

 

直前にレンタルサーバー側が仕様変更を行ったようなので、

それが原因だと容易に想像はつくのですが、

放置する訳にもいかないので修正です。

 

仕様は、

MTを使ったブログから配信されているRSS(RDF)を読み込んで、
新着情報として表示させるだけ!

の、シンプルなものになります。

 

設置者がPEARの「XML_RSS」を使用して組んでいたようですが、

原因調査するのが面倒だったので今回はちゃちゃっと組み直してやることに。
※以前、別サイトで作成したコードをコピペして少し改良するだけです。

<table>
<?php
$ch = curl_init(); //CURLセッションを初期化
curl_setopt($ch, CURLOPT_URL, "http://www.sample.com/new.rdf"); //取得するURL
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //データを出力ではなく、文字列として返す
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); //接続し続ける時間
$str = curl_exec($ch);
curl_close($ch); //CURLセッションを閉じる
$feed = simplexml_load_string($str); //XML文字列をオブジェクトに代入

if(!isset($feed->item)){
print <<<EOF
<tr>
<td><p class="news_text">新着情報がありません。</p>
</td>
</tr>
EOF;
}else{

$num = 3; //取得記事数

for($i = 0; $i < $num; $i++){
if($entry = $feed->item[$i]){

$title = strip_tags($entry->title);
$link = htmlspecialchars($entry->link);
$dc = $entry->children("dc",TRUE);
$date = date("Y.m.d", strtotime($dc->date));

if($date != ""){
print <<<EOF
<tr>
<td><p class="news_date">{$date}</p>
<p class="news_text"><a href="$link">{$title}</a></p>
</td>
</tr>
EOF;
}

}

}

}
?>
</table>

このコードで概ねやりたい事が可能なので、

今回はこれで対応することに!!

 

例えば、ブログのタイトルやURLを取得した場合には、

$feed->channel->title //ブログタイトル
$feed->channel->link //ブログのURL

で取得出来るので、

必要に応じて表示させることも可能です。

この記事を書いている人
株式会社ディープ
名前足立拓也

メールアドレスadachi@deep-deep.jp

関連記事

最近の記事

  1. レンタルサーバ:おすすめの共用サーバ
  2. ホームページ(homepage)
  3. システムアップデート
  4. エックスサーバー(XSERVER)
  5. エックスサーバー(XSERVER)
  6. エックスサーバー(XSERVER)
  7. WEBサイト構築
  8. スパム(SPAM)対策
  9. サイト公開
  10. ネームサーバーの登録

Twitter

ダッチ@職業ブロガー兼プログラマー
@gatsu0000

  • ブログのプロフィールなんかで使用するキャラクター用のイラストが完成しました。プロの方に頼むとめっちゃ男前に作ってくれたから、見栄はってるみたいではずかしいけど、取りあえずこれで運用開始です。 あとは、Twitterのアイコンも現在作成して貰ってる最中やから、来週中には完成しそう!
    about 37分 ago via Twitter Web App

アーカイブ

PAGE TOP