如何使用PHP替换字符串以更改iCal文件中的事件时间?

时间:2018-01-31 23:17:23

标签: php regex icalendar

我有一个很多行的ics文件。其中一些行包含这样的字符串:

DTSTART;VALUE=DATE:20180201

现在我要替换所有这些行:

DTSTART;TZID=Europe/Berlin:20180201T080000

我尝试使用一些在线正则表达式生成器,但问题是我太愚蠢了解它们。任何帮助都会很棒!

1 个答案:

答案 0 :(得分:1)

假设您只想要更改时间以反映Europe/Berlin ...

您可以在正则表达式/(?!DTSTART;)VALUE=DATE(?=:\d)/中使用消极和积极的前瞻来定位'日期'字符串的组成部分。然后只需将其替换为TZID=Europe/Berlin,然后将时区附加到结尾:

$input = 'DTSTART;VALUE=DATE:20180201';
$string = preg_replace("/(?!DTSTART;)VALUE=DATE(?=:\d)/", "TZID=Europe/Berlin", $input);
$string .= 'T080000';

这会为您提供一个名为$string的变量,其值为DTSTART;TZID=Europe/Berlin:20180201T080000,可以看作 here

希望这有帮助!