2010-12-05 42 views
1

我目前正在分析的iCal提醒的字符串,類似於:-P14DT0H0M0SPHP解析iCal的提示字符串

使用PHP,我怎麼可能能夠解析字符串的元素,因此,如果我有:

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

      // OR // 

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

// etc... 

對此的任何幫助將是偉大的。我有點不知從何開始。

非常感謝!

回答

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]; 
} 
+0

謝謝。這是我想弄明白的。 – Dodinas 2010-12-05 23:58:01

0

谷歌日曆可以降並且返回類似'-P7D'的東西,所以我調整了 這裏的正則表達式來處理這個問題。

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