使用PHP解析CalDAV事件

时间:2014-12-11 12:30:06

标签: php parsing events caldav

我正从我的CalDAV服务器检索事件,我现在必须处理它们。这就是事件的样子:

BEGIN:VCALENDAR
VERSION:2.0
BEGIN:VEVENT
DTSTAMP:20141203T144713Z
DTSTART:20141202T130000
DTEND:20141202T152000
UID:1047
DESCRIPTION:
LOCATION:
SUMMARY:ysdasdfasdfasdf
END:VEVENT
END:VCALENDAR

或通过iCalendar(Apple)添加:

BEGIN:VCALENDAR
CALSCALE:GREGORIAN
PRODID:-//Apple Inc.//iOS 8.1.1//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:Europe/Zurich
BEGIN:DAYLIGHT
DTSTART:19810329T020000
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU
TZNAME:MESZ
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
END:DAYLIGHT
BEGIN:STANDARD
DTSTART:19961027T030000
RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU
TZNAME:MEZ
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
END:STANDARD
END:VTIMEZONE
BEGIN:VEVENT
CREATED:20141210T143342Z
DTEND;TZID=Europe/Zurich:20141212T160000
DTSTAMP:20141210T143343Z
DTSTART;TZID=Europe/Zurich:20141212T150000
LAST-MODIFIED:20141210T143342Z
SEQUENCE:0
SUMMARY:bala
TRANSP:OPAQUE
UID:3681EC54-5198-4159-870D-6DAC4B1E302B
END:VEVENT
END:VCALENDAR

我没有找到任何好的PHP实现来解析那些CalDAV事件。如果没有,那么解析它们的最佳方法是什么?

3 个答案:

答案 0 :(得分:5)

这个项目仍然非常活跃:

http://sabre.io/vobject/

答案 1 :(得分:2)

我建议你阅读有关递归下降解析的内容。 F.E. http://www.slideshare.net/relaxnow/recursive-descent-parsing

答案 2 :(得分:1)

我最终使用了ics-parser及其Github的增强功能来实现重复。