HTMLにRSSを埋め込む

トップページに自分のblogのRSSを埋め込み、新着案内などに利用する場合。
参考サイト:http://i-njoy.net/tips/rss.shtml
DL:http://magpierss.sourceforge.net/
   http://www.spencernetwork.org/jcode/
 
rss.phpを作成する

<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>

<body>
<?php
require_once 'rss_fetch.inc';
require_once 'code_table.ucs2jis';
require_once 'jcode.php';
$url = 'http://www.xxx.co.jp/index.xml';
$rss = fetch_rss($url);
$title = $rss->channel['title'];
//JcodeConvert($str, $from, $to) 
$title = JcodeConvert($title, 4, 4);
foreach ($rss->items as $item ) {
$title = $item[title];
$title = JcodeConvert($title, 4, 4);
$itemday = date('Y/n/j',strtotime(substr($item['dc']['date'],0,10)));
$itemday = JcodeConvert($itemday, 4, 4);
$url = $item[link];
echo "<a href=\"$url\" target=\"_blank\">${itemday} $title</a><br />\n";
}
?>
</body>
</html>

文字コード
0.無変換
1.EUC-JP
2.Sift-JIS
3.SO-2022-JP
4.UTF-8
となっている。
 
次にmagpieRSSの0.61をダウンロード、解凍する。
最新版だと文字化けするので注意。
またjcode_1.35a.zipもダウンロード、解凍する。
できたファイルをアップロードする。
その時のファイル構造は

public_html / index.html (トップページ)
  │
  └ magpie / rss.php
     │  jcode.php
     │  code_table.ucs2jis
     │  rss_cache.inc
     │  rss_fetch.inc
     │  rss_parse.inc
     │  rss_utils.inc
     │
     ├ extlib / Snoopy.class.inc
     │
     └ cache (空フォルダを作成する) 

て感じに。
埋め込むのはSSIでもいいのだけれども、HTMLに埋め込む場合は

<!--[if IE]>
<iframe src="/magpie/rss.php" width="368" height="80" marginheight="0" marginwidth="0" vspace="0" hspace="0" frameborder="0"></iframe>
<![endif]-->
<!--[if !IE]> <-->
<object type="text/html" data="/magpie/rss.php">
<p>non object</p>
</object>
<!--> <![endif]-->

とすると、IEFirefox両方に対してうまくいく。
 
Firefoxの場合、DIVなどブロック要素内のiframeはうまく働かないようなので、objectタグを使う必要がある。
が、objectタグを使うとIEの表示がアレなので、折衷案としてこういう感じに。
 
追記:
アメーバブログRSSにまで広告が入り込む。それを除外する場合。
参考:http://ieha.jp/blog/web/php-%e6%96%87%e5%ad%97%e5%88%97%e3%81%ae%e6%9d%a1%e4%bb%b6%e5%88%86%e5%b2%90/
 

echo "<a href=\"$url\" target=\"_blank\">${itemday} $title</a><br />\n";

でリンクを書き出す際に、文字列による条件分岐を付け足す。

$str = $title;
if (strpbrk($str, 'PR: ')) {
	echo "";
} else {
	echo "<a href=\"$url\" target=\"_blank\">${itemday} $title</a><br />\n";
}

これでタイトルに“PR: ”が入った記事を飛ばすことができる。