(float) $temp[0], 'lon' => (float) $temp[1], ]; \preg_match('/URL:(.*?)\r\n/', $match[1], $url); $event['url'] = $url[1]; // Check if this event is recurring if (\preg_match('/RRULE:(.*?)\r\n/', $match[1], $rruleMatch)) { $rrule = self::parseRRule($rruleMatch[1]); $event = \array_merge($event, $rrule); } $eventList[] = $event; } return $eventList; } /** * Parse rrule * * @param string $rruleString rrule string * * @return array * * @since 1.0.0 */ private static function parseRRule($rruleString) : array { $rrule = []; \preg_match('/FREQ=(.*?);/', $rruleString, $freqMatch); $rrule['freq'] = $freqMatch[1]; \preg_match('/INTERVAL=(.*?);/', $rruleString, $intervalMatch); $rrule['interval'] = (int) $intervalMatch[1]; if (\preg_match('/COUNT=(.*?);/', $rruleString, $countMatch)) { $rrule['count'] = (int) $countMatch[1]; } if (\preg_match('/UNTIL=(.*?);/', $rruleString, $untilMatch)) { $rrule['until'] = \DateTime::createFromFormat('Ymd\THis', $untilMatch[1]); } return $rrule; } }