Hi Forum,
gegeben sei folgender Text (Das hier ist natürlich nur ein Auszug.):
BEGIN:VEVENT
DTSTART;VALUE=DATE:20120621
DTEND;VALUE=DATE:20120622
RRULE:FREQ=YEARLY;BYMONTH=6;BYMONTHDAY=21
DTSTAMP:20120703T080230Z
UID:DBEA2E86EBA4444DA2F456A266B1C83F00000000000000000000000000000000
CREATED:20120621T163508Z
DESCRIPTION:
LAST-MODIFIED:20120621T163508Z
SEQUENCE:1
STATUS:CONFIRMED
SUMMARY:################
TRANSP:OPAQUE
CATEGORIES:http://schemas.google.com/g/2005#event
BEGIN:VALARM
ACTION:DISPLAY
DESCRIPTION:This is an event reminder
TRIGGER;VALUE=DATE-TIME:20120620T000000Z
END:VALARM
END:VEVENT
Dieser Text kommt jetzt X-Mal vor und ich möchte nur das haben was jeweils zwischen BEGIN:VEVENT und END:VEVENT steht. Dies versuche ich Mit einem REGEX, welcher sich allerdings meiner Ansicht komisch verhält.
Hier der ursprüngliche Versuch, welcher aber komplett scheitert ;).
<?
preg_match_all('/BEGIN:(VEVENT)([^(?:END:\1)]*)END:\1/si',file_get_contents('/test/basic.ics'),$matches);
print_r($matches);
?>
Um der Sache auf die Spur zu kommen, wollte ich die Sache von vorne aufrollen und erst mal testen was alles kommt wenn ich von BEGIN:VEVENT alles bis zum nächsten BEGIN erfasse:
<?
preg_match_all('/BEGIN:(VEVENT)([^(?:BEGIN)]*)/si',file_get_contents('/root/basic.ics'),$matches);
print_r($matches);
?>
Doch jetzt wird es komisch und für mich nicht mehr nachvollziehbar. Hier die Ausgabe:
Array
(
[0] => Array
(
[0] => BEGIN:VEVENT
DTSTART;VALU
)
[1] => Array
(
[0] => VEVENT
)
[2] => Array
(
[0] =>
DTSTART;VALU
)
)
Warum gibt es nur den Test DTSTART;VALU aus? Dahinter steht doch gar kein BEGIN.
MFG Hektor