gpt4 book ai didi

php - 这个 iCal 日历有什么问题?

转载 作者:行者123 更新时间:2023-12-05 01:48:21 24 4
gpt4 key购买 nike

我编写了一个脚本来根据我数据库中的事件生成一个 iCal 日历。这是一个示例输出:

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//hacksw/handcal//NONSGML v1.0//EN
BEGIN:VEVENT
ORGANIZER;CN=Blodgruppen
DTSTART:20130128T173000Z
DTEND: 20130128T193000Z
SUMMARY: Su-möte
END:VEVENT
BEGIN:VEVENT
ORGANIZER;CN=F-styret
DTSTART:20130128T173000Z
DTEND: 20130128T193000Z
SUMMARY: Su-möte
END:VEVENT
BEGIN:VEVENT
ORGANIZER;CN=Blodgruppen
DTSTART:20130412T100000Z
DTEND: 20130414T180000Z
SUMMARY: KTH
END:VEVENT
BEGIN:VEVENT
ORGANIZER;CN=F-styret
DTSTART:20130412T100000Z
DTEND: 20130414T180000Z
SUMMARY: KTH
END:VEVENT
END:VCALENDAR

当我尝试在 iCal 中订阅此文件时,它说该文件无效。有谁知道为什么吗?

此外,有人知道我是否会因为我的文件结尾是 .php 而不是 .ics 而在某处遇到问题吗?

(如果有帮助,我通过查看维基百科上的示例构建了上面的内容:http://en.wikipedia.org/wiki/ICalendar#Core_object)

最佳答案

回到最基本的一点,你不能上传你的 PHP 脚本,一些日历客户端允许你订阅一个 URL 来获取 iCal 提要,确保这是你正在做的并且你没有尝试上传PHP 脚本文件。

如果没问题,那么我们可以看看定义。根据documentation ORGANIZER 参数是可选的,如果包含它,它必须有一个冒号 : 和一个必须是 cal-address网址。您的 ORGANIZER 字段如下所示:

ORGANIZER;CN=Blodgruppen

它们应该是这样的:

ORGANIZER;CN=Blodgruppen:URI

URI 不一定必须是 mailtohere are some examples .为方便起见,可以像这样添加电子邮件地址...

ORGANIZER;CN=Blodgruppen:MAILTO:bob@b.com

或者电话号码...

ORGANIZER;CN=Blodgruppen:TEL:+49-01234-56789

您可以包括一个 ftp URL 网络以及其他一些不太常用的东西。或者,该参数不是必需的,因此您可以简单地将其删除。

VEVENT 似乎还缺少一个 UID 和一个 DTSTAMP,它们是必需的属性。

UID 可以是您选择的标识符,但它应该是全局唯一的。我将花时间通过描述 UID 参数的含义来解释全局唯一的含义。日历客户端将使用它来识别事件,如果您使用日历中已存在的事件的 ID,它将更新该事件,认为您的意思是它这样做,因此它不能与现有事件的 ID 匹配.如果您考虑将事件添加到许多可能也包含事件的不同日历客户端,这就是它必须“全局”唯一的原因。您可以在 PHP 中使用 uniqid() 函数,它可能有助于创建您自己的全局唯一标识符。

DTSTAMP 是事件创建或最后更新的时间。

您定义中的空格不一致,文档不讨论参数和值之间的空格,但所有示例都没有空格显示,因此您可能还想去除任何非必要的空格...

DTEND: 20130128T193000Z

成为...

DTEND:20130128T193000Z

它可能不会造成伤害,但存在这种可能性。我还会开始使用最少的参数尝试一个事件,只是为了检查它是否是导致问题的 iCal 定义。

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//hacksw/handcal//NONSGML v1.0//EN
BEGIN:VEVENT
UID:20121229T212000Z-test-1
DTSTAMP:20121229T212000Z
DTSTART:20130128T173000Z
DTEND:20130128T193000Z
END:VEVENT
END:VCALENDAR

您可能想检查您的 PHP 脚本是否使用了正确的 mime 类型以及 text/calendar。如果不是,您可以使用 header 函数将 Content-Type header 添加到响应中:

 header("Content-Type: text/calendar");

我希望这有助于...

关于php - 这个 iCal 日历有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14085326/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com