googleCalendarは、ical(icalendar format)に対応しています。
このフォーマットをうまく使うと、OUTLOOK等へも、イベントの日時や内容を、一気に受け渡す事ができるようになります。
その代表的な例に、イベントキャストなどがあります。
誰でも自由に、サービスを構築できるようになるのでとても魅力的ですが、
「うまくやる」ことは簡単ではありません。
16進の数値文字列参照に変換することで、文字化けを避けることができます。
$str= mb_convert_encoding($str, 'HTML-ENTITIES', 'UTF-8');
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("index2.ics",$str);
echo nl2br($str);