php - 如何使用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
任何人都可以请帮助我我们怎样才能得到它?
解决方案
使用修饰符捕获开始和结束分隔符之间.*
非贪婪的所有内容(匹配所有字符,包括换行符):?
s
.
$text = file_get_contents('/path/to/file.txt');
preg_match_all('/BEGIN:VEVENT.*?END:VEVENT/s', $text, $result);
print_r($result[0]);
推荐阅读
- json - 使用杰克逊子类型时如何避免获得带有随机信息的额外字段?
- postgresql - docker compose ignoring env vars when creating the container for postgres
- mysql - 如何使用 node-red 从数据库中提取数据
- node.js - 在设置关联时定义要加入的列
- java - Android Paho Mqtt - close() 与 unregisterResources() - OutOfMemoryError
- c# - 如何在 C# 中创建列表变量?
- email - 从我的域中删除亚马逊的入站 smtp
- c# - 如何调用我引用的 Xamarin 应用程序的 AppShell 类中的方法?
- javascript - 单击菜单列表中的任何选项时,执行 url 的目标是在同一 html 文件中的另一个 div 标记内
- oracle - 我试图从 sys_refcursor 获取 bulkcollect 记录并尝试使用 forall 插入另一个表,但它会抛出错误消息