2010年2月5日金曜日

google calenderの情報を表示させるPHP

前回、偉そうに紹介しましたが、久しぶりにいじってみたらGoogle CalendarのRSSの仕様が変更になっており、若干のパージョンアップが必要になりました。また、情報の数を自由にできるバージョンアップをしました。

また、プログラム的にもっさいところがあったことが判明しました! バカすぎです。 恥ずかしいです!
でも、おばさんは負けません!頑張ります。

次は場所とかを引っ張って携帯とかの表示に便利なように頑張ってみたいと思います。

ありがたいXMLライブラリーを使います。(IRONでリンク先はひらないので注意)


<?php
//エラーは表示させません!
error_reporting(1);
//XMLライブラリーを引っ張ってきます
require('XMLLibrary.php');
//googleカレンダーのRSSを指定
$data = file_get_contents("http://www.google.com/calendar/feeds/1qkkqtv5eo3jimiidbltonpi1s%40group.calendar.google.com/public/basic");
//xmlライブラリーの命令みたいです
$array = XML_unserialize($data);
//配列を作ります
$entry = $array['feed']['entry'];
//基準値用の本日の日付
$today = date("Y/m/d");

//配列にするdatasを準備します。まだ何も入っていません。
$datas = array();

//$entryの要素をカウントし、一個一個要素を入れてきます。
$count = count($entry);
for($i=0; $i<$count; $i++){
$tlong = strlen($entry[$i]['title']);
if($tlong>38){$entry[$i]['title'] = mb_strimwidth($entry[$i]['title'],0,37);
$cont[$i]['title'] = $entry[$i]['title']."&nbsp;...";
}else $cont[$i]['title'] = $entry[$i]['title'];
$cont[$i]['content']=mb_strimwidth($entry[$i]['summary'],3,30);
array_push($datas,$cont[$i]['content']);
$cont[$i]['link'] = $entry[$i]['link']['0 attr']['href'];
}

//今日の日付より前の日付のものを削除します
foreach($datas as $i => $s) {
if (strtotime($s) < strtotime($today)) {
/* 配列から削除する */
unset($datas[$i]);
}
}
//並べ替えます
asort( $datas );

//データの数を数えて、7個以上野場合はあるれた数を削除します。
$nub = count($datas);
if ($nub>=7){$a = $nub-7;
unset($datas[$a]);
}
 ここのところ間違っているので、こっちを見てください。
//印刷部分
foreach ($datas as $key => $value) {
print <<<ENTRY_PEINT
<p class="m"><a href="#" onclick="window.open('{$cont[$key][ 'link' ]}','javascript_1','height=250,width=700,resizable');">{$cont[$key]['title']}</a></p><p class="s">{$cont[$key]['content']}…</p></p>n
ENTRY_PEINT;
}

?>


なんと短いことでしょう!
http://www.actionk.co.jp/gcalender.php

utf-8で表示できます。 rssがutf-8になったみたいで文字変換の必要がなくなりました。

お問合せフォーム

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

 約束しないと、送信できません。再度の場合はリロードが必要です。


0 コメント :

コメントを投稿

コメントありがとうございます。


サイト内検索


View My Stats