2010年5月28日金曜日

配列のデータを一定数削除 google calender 一定表示

Google カレンダー以下の方法でむかしは出ていたのですが、仕様がころころ変わって出なくなりました。今はAPIを使うのがいいと思います。



勉強しないかん。 下の記事は参考までにしてください。



これが検索してもわからず、私の愛用のリファレンスにもなかったので質問して教えてもらいました。

PHP4とPHP5でarray_slice というのがあるそうです。

<?php
$input = array("a", "b", "c", "d", "e");

$output = array_slice($input, 2); // "c", "d", "e" を返す
$output = array_slice($input, -2, 1); // "d" を返す
$output = array_slice($input, 0, 3); // "a", "b", "c" を返す

// 配列キーの違いに注意
print_r(array_slice($input, 2, -1));
print_r(array_slice($input, 2, -1, true));
?>


なんか、ちょっとみない間にまたおかしくなっていたアロマセミナーのお仕事をしているアクションケイさんのサイトのグーグルカレンダーを利用した部分が、予定が長くなっておりましたので、改良しました。というか、これが間違っていました!アホですな。

以下を使うとgoogle calender の予定を抜き出して順番に並べ替え、一定数(以下は6個)の予定を表示させることができます。 これを工夫して次は携帯サイトを作りたいと思っております。




<?php
error_reporting(1);
require('XMLLibrary.php');
$data = file_get_contents("http://www.google.com/calendar/feeds/1qkkqtv5eo3jimiidbltonpi1s%40group.calendar.google.com/public/basic");
$array = XML_unserialize($data);
$entry = $array['feed']['entry'];

$today = date("Y/m/d");

// 最初の要素で配列を作る
$datas = array();

$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 );//日付でならべかえる

$cnt = 0;
foreach ($datas as $key => $value) {
if ($cnt++ >= 6) { break; }
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;
}

?>



utf-8に変換する必要がなくなったみたいです。 ちょっと楽になりました。
php XML libraryって本当にありがたいものですね。

お問合せフォーム

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

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


0 コメント :

コメントを投稿

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


サイト内検索


View My Stats