【PHP】FC2ブログのRSSを取得してdl形式で出力

HPのパーツとして30分ぐらいで作ったもの。 このままじゃ他で使えないレベル。エラー対策皆無です。 RSSの解析にMagpieRSSと キャッシュにPearのCacheLiteを使ってます。 HTMLをなぜかolではなく、dlで組んでるのは、たしか本文の一部(items[$i]['description'])の箇所を ddで表示させようかと思ってたため。
<?php
function getrss(){
include_once('magpierss/rss_fetch.inc');
//Magpie RSS使います http://magpierss.sourceforge.net/
$rss='http://petitec.17sai.jp/feed';
//RSSのURLを指定。Magpie RSSを使ってタイトルや概要などを読み込み
if($xmlobj=@fetch_rss($rss)){
$text='';
$title='';
for($i=0;$iitems);$i++){
$text[$i]=$xmlobj->items[$i]['description'];
$title[$i]=$xmlobj->items[$i]['title'];
$link[$i]=$xmlobj->items[$i]['link'];
$date[$i]=eregi_replace('20([0-9]{2})\-([0-9]{2})\-([0-9]{2})(.+)','\1/\2/\3',$xmlobj->items[$i]['dc']['date']);
}
if($title[0]){
$code='
'; for($i=0;$i $code.="
{$date[$i]} {$title[$i]}"; } $code.='
'; }else{ $code='なんかダメでした'; } return $code; } } require_once('Cache/Lite.php'); //PEARのCahce Liteも使います。 $CacheTime=60*5; // キャッシュの保存場所とキャッシュの生存期間を指定(秒) $options = array( 'cacheDir' => 'cache/', 'lifeTime' => $CacheTime ); $Cache_Lite = new Cache_Lite($options); $id = 'blogrss'; // 指定id のキャッシュが存在するかどうか if ($data = $Cache_Lite->get($id)) { // キャッシュがあるのでキャッシュされたデータを表示 $code =$data; $mess='キャッシュ利用'; // キャッシュがなかったら本来の処理を実行 } else { $code =getrss(); $mess='キャッシュが古いか、無いので新たに取得'; // データをキャッシュする $Cache_Lite->save($code); } print $code;
これを表示させるときは、jQueryを使ったjsでAJAX読み込みしました。
 $(document).ready(function() {
         $('#blog-load').load('blog.php');
});
読込先の#blog-loadのdivは
<div id="blogload">
<a href="ブログのURL">「ブログタイトル」</a>読み込み中...
</div>
のような感じにしとくとPHPがダメだったなどの問題発生時に最低限の対応にはなって良いかなと思った。 HTMLも空divにもならないし。
Posted in PHP, プログラム at 11月 8th, 2009. No Comments.

W3C Date and Time Formats (W3CDTF) を正規表現でYY/MM/DD形式に整形

FC2ブログのRSSなんかで使われているW3C Date and Time Formats (W3CDTF) を YY/MM/DDなどの一般的な形式に変換するのに少々てこずったのでメモ。 時間は諦めました。 $w3cdateに「2009-10-31T12:00.00+09:00」みたいなやつを代入。 2100年以降とか時間ないタイプに対応してなかったりいい加減・・・。
$yymmdd=eregi_replace('20([0-9]{2})\-([0-9]{2})\-([0-9]{2})(.+)','\1/\2/\3',$w3cdate);
→出力例:09/10/31
Posted in PHP at 10月 31st, 2009. 2 Comments.

ついにCORESERVER上位プラン(CORE-B)開始 月990円で60GB

このブログも動いているCoreserverですが、ついに上位プランが出ました。 サービス開始からずーっと準備中でしたがやっとです。 下位プランとの主な比較(引用)
# 料金:5,000円/年 → 9,900円/年(月額825円) # ディスク容量:15GB → 60GB # 転送量目安(月):150GB → 300GB # 許容負荷率:1 → 4倍 # お試し期間:15日 → 5日(短縮しております) # 上位ハードウェア・CPU・メモリーの採用 # PHP+MySQL、ディスク処理の最適化・高速化
500円で15GBだったのが、990円で60GBになるとは驚き。 さらにCPUもメモリも全く躊躇のない高性能っぷりですね。 共有サーバーで最強じゃないでしょうか。 肝心の1サーバーあたりのアカウント数は64と半分になったものの まだちょっと多いかな。 でも相当負荷掛けまくりの迷惑な人がいなければ、 他のサーバーよりかなり快適でしょうね。 お試しは5日間になってるけど、ここ借りる人って分かってる人が多いでしょうし 問題はなさそう。 ただ、AからBに今のデータとかドメイン・メール設定とか、まるごと移す機能が無いっぽいのが残念。 最近重いし、あったら今日移ってたかもしれない。 自分は最近プログラム、ブログとかあんまりやる時間がないので、維持費倍近くは悩みます。 Aでバリバリつかってて、不満がある人にはかなりいいんじゃないでしょうか。
Posted in サーバー at 10月 20th, 2009. No Comments.

Wordpress標準カレンダーのtitle属性を消す

worpressの標準カレンダーには、日付のリンクごとに、その日に投稿したブログ記事のタイトルがtitle属性に入ってます。 1日1記事とかなら全然いいけど、少年マガジンRSSCheckerのような、1日に何十件も入るような ブログだと、そのtitle属性だけで大変な量になり、読み込みに時間&サーバーに負荷がかかるのでよろしくない。 なので消す方法を考えました。 プラグインで消せればいいけど、どうすればいいのか思いつかないので、とりあえずは手作業で。 WPをアップグレードするたびにしなきゃいけません。 現在のバージョン2.83ですと、カレンダーを呼び出すget_calendar()は wp-includes -> general-template.php の955行目に発見。 そして、titleを書き出す箇所は1133行目に発見しました。 それで単純に削除。元のやつはコメントで残しておきました。 general-template.phpの1132行目あたりから
if ( in_array($day, $daywithpost) ) // any posts today?
 //echo '<a href="' . get_day_link($thisyear, $thismonth, $day) . "\" title=\"$ak_titles_for_day[$day]\">$day</a>";
 echo '<a href="' . get_day_link($thisyear, $thismonth, $day) . "\">$day</a>";
 else
 echo $day;
 echo '</td>';
これでとりあえずはすっきり
Posted in PHP, Wordpress at 8月 4th, 2009. No Comments.

やっぱりブログパーツはdocument.write()よりinnerHTML。それをwindow.onloadに追加がベスト!?

みつりんなどAmazonAPIで取得した情報を貼り付けるjavascriptのタグを作るときに いろいろ試したんですが、やっぱりdocument.writeは使わない方がいいですね。 そこでページの描画が止まってしまいイライラします。 試行錯誤の結果、貼り付けタグにscriptタグだけでなく、id付きのdivも一緒に発行し、 document.getElementById(“id名”)でその中に流し込むのが良さそうです。 divの中身には、テキストリンクなどを書いておけば、javascriptが動かない環境や、javascriptが読み込めなくなっても、 最低限の情報は確保できるし、空divじゃなくなるのでエラーも出ませんしね。 そして、実行するタイミングは、下記のページを参考にwindow.onloadに追加する形で。 ページの描画が邪魔されないので高速です。 イベントに処理を追加する ↑これは、いろいろな所で応用が利きますので覚えとくと便利です。 サンプルに週刊少年マガジンRSScheckerで使っているものを以下に。 Read More…
Posted in javascript, みつりん, プログラム at 7月 30th, 2009. No Comments.