PHP解析iCal提醒字符串

时间:2010-12-05 23:25:01

标签: php string parsing icalendar

我正在解析iCal提醒字符串,类似于:-P14DT0H0M0S

使用PHP,我如何能够解析字符串的元素,以便我有:

<?
 $reminder = "-P14DT0H0M0S"  // somehow output to show "-2 weeks" or eve "-14 days"

             //  OR  //

 $reminder = "-P0DT3H0M0S"  // somehow output to "-3 hours" 

 // etc...

对此的任何帮助都会很棒。我有点被困在哪里开始。

非常感谢!

3 个答案:

答案 0 :(得分:1)

我对这种格式并不熟悉,而且几乎可以肯定有一个可用的库,但看起来像一个简单的正则表达式就可以完成这个工作。

类似的东西:

$matches = array();
if (preg_match('/^-P(\d+)DT(\d+)H(\d+)M(\d+)S$/', $reminder, $matches))
{
  // matched pattern, elements captured with () will be stored in $matches[1..]
  $days = $matches[1];
  $hours = $matches[2]; 
  $minutes = $matches[3];
  $seconds = $matches[4];
}

答案 1 :(得分:1)

不确定项目的背景或最终结果是什么,但这可能有所帮助:

答案 2 :(得分:0)

Google日历可以完全放弃时间部分并返回类似'-P7D'的内容,因此我进行了调整 fromhere 的正则​​表达式来解决这个问题。

preg_match('/^-P(\d+)DT?(\d+)?H?(\d+)?M?(\d+)?S?$/', $reminder, $matches);