Google Calendar にiCalサービスを作る
iCalendar(アイカレンダー)とはPIMソフトなどで使われるスケジュールの標準フォーマット。
googleCalendarや、outlookなどが対応しています。
このフォーマットを使う事で、日時や時間など、イベントの細かな情報を一気に受け渡す事ができます。
そのWEBでの例に、イベントキャストなどがあります。
誰でも自由に、サービスを構築できるようになるのでとても魅力的ですが、
「うまくやる」ことは簡単ではありません。
googleCalendarでは文字化けが発生するためです。
その他、プラットフォームにより、改行等でエラーになる等、実際にやろうとすると、問題が付きまといます。
そのような中でも、うまくやっているところもあります。
文字化けが発生しないサービスの中には、特別な文字を使っているものもあります。(livedoor 天気予報)
16進の数値文字列参照といわれるもの
日本語を変換する方法がなかなか見つかりません。phpで試行錯誤しながら、何とか変換用コードが出来たので、公開します。
//10進に変換します。 $str= mb_convert_encoding($str, 'HTML-ENTITIES', 'UTF-8'); //16進に変換します。 preg_match_all(" |(&#)([0-9]+)(;) |u",$str,$regs,PREG_SET_ORDER); foreach($regs as $dohex){ $str= str_replace($dohex[0] , "&#x".dechex($dohex[2]).';', $str); } $str= trim(str_replace("\n","\r\n",$str)); file_put_contents("data.ics",$str);
>とか、<等、は別途に処理してくださいね。
ヘッダをつける必要があれば、sample
header("Content-Type: text/Calendar"); header("Content-Disposition: inline; filename=calendar.ics");