我有一个很多行的ics文件。其中一些行包含这样的字符串:
DTSTART;VALUE=DATE:20180201
现在我要替换所有这些行:
DTSTART;TZID=Europe/Berlin:20180201T080000
我尝试使用一些在线正则表达式生成器,但问题是我太愚蠢了解它们。任何帮助都会很棒!
答案 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 。
希望这有帮助!