2010年2月11日木曜日

nucleus のRSSから写真を抜き出してランダム表示

別にnucleusでなくてもいいと思いますが、パチンコ攻略の御大「吉野大観」のサイトはnucleusで作りましたが、毎回違って見えるように写真をランダム表示するようにしてみました。


<?php
// URLの指定
$rdf_url = "http://www.thetruth.jp/atom.php?blogid=4";

// RSSを取得
$content = file_get_contents($rdf_url);



// rdfを解析する (下の関数で処理)
$datas = analyze_rdf($content);


// rdf ファイルを解析するための関数
function analyze_rdf($cnt) {
// <item> ~ </item> を切り出す
$ptn = '/<entry[^>]*>(.+)</entry>/sU';
preg_match_all($ptn, $cnt, $matches);

// マッチしてれば
if (count($matches) > 0) {
// 配列に入れる
$items = $matches[1];
} else {
return FALSE;
}


// パターンの指定
$ptns["img"] = '!<img[st]+src[st]*="(.*)"[^/>]*?/>!sU';
$ptns["link"] = '/<link rel="alternate" type="text/html" href="(.*)" />/sU';
$ptns["title"] = '/<title type="html"><![CDATA[(.*?)]]></title>/sU';
$return_array = array();




// link の抜き出し
foreach ($items as $val) {
$res = array();

preg_match($ptns["img"], $val, $matches);
$res["img"] = $matches[1];
preg_match($ptns["link"], $val, $matches);
$res["link"] = $matches[1];
preg_match($ptns["title"], $val, $matches);
$res["title"] = $matches[1];

$return_array[] = $res;

}

// 配列を返す
return $return_array;
}

// $count 個分の配列を生成
for ($i = 0; $i < $count; $i++) {
$tmp_array[] = $i;
}



// HTML に整形するための関数

function make_html($data) {
$str = "<a target="_parent" href="" . $data["link"] . "">";
$str .= "<img src="". $data["img"] ."" width="264" height="215" alt="パチンコ楽しい!:". $data["title"] . "" /></a>";
return $str;
}

$num = rand(0,3);
print make_html($datas[$num]);

?>

正規表現を実はまったく知らないのに人のを見て想像して書いています。勉強したいけどもうあれは頭に入りません。チンプンカンプンに頭がなります… orz
フラッシュなんかにも加工できるかも。

尚、このプログラム、nucleusを私はTinyMCEで運用しているのですが、なぜか最新のTineMceと古いのではhtmlが違うらしく、最新のものだと写真を絶対パスで入力してしまうので、いちいち相対パスに書きなおさないとうまく動きません。 新しいものは、alt などが後ろに来て、前のはalt が前なので、html でそのように書き直します。なんとかどっちでも載せられるようにしたいと思ったのですが、RSS分析してもよくわからなかった。orz.
これを追求すると疲れそうなので次の機会に…。 あ~もう。

お問合せフォーム

お名前 :
Email: (必須)
メッセージ: (必須)


0 コメント :

コメントを投稿



連絡フォーム

名前

メール *

メッセージ *

サイト内検索

View My Stats