PHPでRSS FEEDを解析

dev No Comments »

fff外部ブログサイトのRSS FEEDをPHPで解析してサイトに表示、リンクさせる方法。サンプル探してみたらこんなのがありました。

MagpieRSSは、GPLで開発されているRSSを解析するライブラリ、いわゆるRSSパーサです。PHPでリモートからRSSを取得して解析、キャッシュを行います。

  1. 言われるままにダウンロード(こちらから→SourceForge.net: Files)して解凍
  2. 解凍したフォルダにsample.phpとして下記の内容でファイルを作成
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
    <head>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
    <title>sample</title>
    </head>
    <body>
    <?php
    require_once('./rss_fetch.inc');
    define('MAGPIE_OUTPUT_ENCODING', 'UTF-8');
    $url = 'http://yourdomain.com/rssfile.rdf';
    $rss = fetch_rss($url);
    $title = $rss->channel['title'];
    echo "<h1>$title</h1>n";
    echo "<ul>n";
    foreach ($rss->items as $item ) {
    $title = $item['title'];
    $link = $item['link'];
    $pubdate = $item['dc']['date'];
    echo "<li><a xhref=\"$link\">$title ($pubdate)</a></li>n";
    }
    echo "</ul>n";
    ?>
    </body>
    </html>
    
  3. ブラウザで確認したら、日付がうまくとれてないみたい(今回読み込むFEEDはFC2ブログのもの)。rss_util.incをちょっと改造(28行目)すると日付も表示できた(sample1 - てんぽさんのFEED読ませてもらってます)。
    変更前
    $pat = "/(d{4})-(d{2})-(d{2})T(d{2}):(d{2})(:(d{2}))?(?:([-+])(d{2}):?(d{2})|(Z))?/";
    変更後
    $pat = "/(d{4})-(d{2})-(d{2})T(d{2}):(d{2}):(d{2})+(d{2}):(Z)/";

改造後のrss_util.incはこちら。

この改造は何かを失ってる気がする。そして、紆余曲折あってinit.incで

  • FEEDのURL
  • HTMLのフォーマット(dl or ul)
  • 表示件数
  • リンクのタイプ(外部リンクやら~)
  • 日付のフォーマット
  • ブログタイトルをどのタグで囲うか

を設定できるように改造。

$url
(FEEDのURLを指定)
$soe
(表示したいエントリーの数を指定)
$dateformat
typeA
2007.03.23
typeB
2007.03.23-12:02
$htmlformat
"dl" or "ul"
$linkformat
normal
<a xhref="link" mce_href="link"   title="title">
wo
<a xhref="link" mce_href="link"   title="title" onclick="window.open(this.href,''); return false;">
external
<a xhref="link" mce_href="link"   title="title" rel="external">
$tmark
"h1" or "h2" or ... "p" or ...

htmlformatter.incdateformatter.incを同じ階層に置いてこのような使い方。

sample2.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>sample</title>
</head>
<body>
<?php
require_once('./init.inc');
require_once('./rss_fetch.inc');
require_once('./dateformatter.inc');
require_once('./htmlformatter.inc');
define('MAGPIE_OUTPUT_ENCODING', 'UTF-8');
$rss = fetch_rss($url);
$title = $rss->channel['title'];
$siteurl = $rss->channel['link'];
$sitename = formattitle($title,$siteurl,$tmark,$linkformat);
$entrylist = formathtml($htmlformat,$linkformat,$dateformat,$rss,$soe);
echo ("<div id=\"entrylist\">".$entrylist.$sitename."</div>");
?>
</body>
</html>
init.inc
<?php
$url = "http://mb.blog7.fc2.com/?xml";
$soe = 3;
$dateformat = "typeA";
$htmlformat = "ul";
$linkformat = "wo";
$tmark = "p";
?>

sample2が動いてるところ

なんとなくイモくさいコードだけどまーいいか。

pukiwikiページ検索ブックマークレット

bookmarklet No Comments »

せっかくコメントもらってたんですが、サーバ移行の際、DBのバックアップに失敗してました。チェックしとけばよかった。。
wp_commentsはちゃんとあったんだけど、なぜかwp_postsがないという。。

  • pukiwiki-pageSearch
    • ブラウザのリンクのとこ(なんて呼べばいいの)にドラッグして使ってください。
      IEではできないかもです。7ができるのかどうかしらん。
    • xoopsのbwikiでも使えると思います。

近々、Shift+Fでpukiwikiのページ検索する方法書こうと思っとります。
たいしたネタじゃないですが。

Powered by WordPress | WP Theme & Icons by N.Design Studio
Entries RSS Comments RSS ログイン