2010-12-05 32 views
1

Je travaille actuellement sur l'analyse syntaxique des chaînes iCal de rappel, semblable à: -P14DT0H0M0SiCal PHP Parse Rappel Chaîne

En utilisant PHP, comment pourrais-je être capable d'analyser les éléments de la chaîne de sorte que si j'avais:

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

      // OR // 

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

// etc... 

Toute aide sur ce serait génial. Je suis coincé par où commencer.

Merci beaucoup!

Répondre

1

Je ne suis pas familier avec le format, et il y a presque certainement une bibliothèque disponible pour cela, mais il semble qu'une simple regex ferait l'affaire ici.

Quelque chose comme:

$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

Merci. C'est ce que j'essayais de comprendre. – Dodinas

0

calendrier Google peut déposer temps partie complètement et de renvoyer quelque chose comme '-P7D' donc j'ai tordu de cela ici l'expression rationnelle pour faire face à cela.

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