一尘不染

如何使用PHP动态发布可被Google日历读取的ical文件?

php

任何Google在PHP ical上的搜索都只会显示phpicalendar以及如何解析或读取IN
ical文件。我只想编写一个PHP文件,该文件从数据库中提取事件并以ical格式将其写出。

我的问题是我找不到任何地方可以回答两个问题:

  1. 确切的 文件格式是什么,包括页眉,文件格式,页脚等?换句话说,要由Google日历等正确读取文件,文件必须具有什么内容?
  2. 如果我使用.php扩展名构建此文件,该如何将其发布为ical?是否需要写入新的.ics文件?还是Google日历等会以正确的格式读取.php文件为ical?(如果内容实际上是CSS等,则类似于style.css.php文件将被读取为CSS文件。)

大家可以提供或指向我的任何帮助将不胜感激!!!


阅读 328

收藏
2020-05-29

共1个答案

一尘不染

如果Google日历不需要*.ics-extension(这需要在服务器中重写一些URL),则这应该非常简单。

$ical = "BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//hacksw/handcal//NONSGML v1.0//EN
BEGIN:VEVENT
UID:" . md5(uniqid(mt_rand(), true)) . "@yourhost.test
DTSTAMP:" . gmdate('Ymd').'T'. gmdate('His') . "Z
DTSTART:19970714T170000Z
DTEND:19970715T035959Z
SUMMARY:Bastille Day Party
END:VEVENT
END:VCALENDAR";

//set correct content-type-header
header('Content-type: text/calendar; charset=utf-8');
header('Content-Disposition: inline; filename=calendar.ics');
echo $ical;
exit;

这实际上是使客户认为您正在提供iCalendar文件所需的全部内容,即使在缓存,文本编码等方面可能存在一些问题。但是您可以开始尝试使用此简单代码。

2020-05-29