首页 > 解决方案 > 如何使用php从ical文件中获取数组中的特定部分

问题描述

我有文件,我需要所有带有 startBEGIN:VEVENT和 end的部分END:VEVENT,我需要包含数组中所有这些部分的所有字符串,我有以下字符串

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//hacksw/handcal//NONSGML v1.0//EN
CALSCALE:GREGORIAN
BEGIN:VEVENT
LOCATION:Test Location
DESCRIPTION:Test Description
DTSTART:20190507T185657Z
DTEND:20190507T185657Z
SUMMARY:Test Summary
URL:http://xxxxxxxxx
DTSTAMP:20190507T185657Z
UID:5cdaa1cd6c3c3
END:VEVENT
BEGIN:VEVENT
LOCATION:Test Location
DESCRIPTION:Test Description
DTSTART:20190508T185657Z
DTEND:20190508T185657Z
SUMMARY:Test Summary
URL:http://xxxxxxxxx
DTSTAMP:20190508T185657Z
UID:5cdaa1cd6c3cc
END:VEVENT
END:VCALENDAR

我需要数组中的这 2 部分

BEGIN:VEVENT
LOCATION:Test Location
DESCRIPTION:Test Description
DTSTART:20190507T185657Z
DTEND:20190507T185657Z
SUMMARY:Test Summary
URL:http://xxxxxxxxx
DTSTAMP:20190507T185657Z
UID:5cdaa1cd6c3c3
END:VEVENT
BEGIN:VEVENT

LOCATION:Test Location
DESCRIPTION:Test Description
DTSTART:20190508T185657Z
DTEND:20190508T185657Z
SUMMARY:Test Summary
URL:http://xxxxxxx
DTSTAMP:20190508T185657Z
UID:5cdaa1cd6c3cc
END:VEVENT

任何人都可以请帮助我我们怎样才能得到它?

标签: php

解决方案


使用修饰符捕获开始和结束分隔符之间.*非贪婪的所有内容(匹配所有字符,包括换行符):?s.

$text = file_get_contents('/path/to/file.txt');
preg_match_all('/BEGIN:VEVENT.*?END:VEVENT/s', $text, $result);
print_r($result[0]);

推荐阅读