Parser ICS

Freddy_666 Messages postés 5 Statut Membre -  
 ANexus -
Bonjour,
J'ai un petit problème, je dois réussir a récupérer les dates d'évènements et les intitulés d'évènements d'un fichier ics
je me suis dit, qu'il fallait utiliser mon pire cauchemar, les expressions régulières. Bien sur je n'y suis pas arrivé, et le script ne m'affiche rien...
Voila un morceau du fichier ics en question (un fichier de test que j'ai généré sur google agenda...):

BEGIN:VEVENT
DTSTART;TZID=Europe/Paris:20080623T130000
DTEND;TZID=Europe/Paris:20080623T210000
DTSTAMP:20080523T100943Z
UID:lgg3no13r89ha5ifgmc7hk059g@google.com
CLASS:PRIVATE
CREATED:20080523T100916Z
LAST-MODIFIED:20080523T100916Z
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY:test
TRANSP:OPAQUE
END:VEVENT

Et donc aprés un petit voyage sur internet, j'ai trouvé quelque petites idées, mais sa n'as pas marché. Voici le code php:

$contenuFichier = file_get_contents("./basic.ics");

//Les expression reguliere
$pcre_date_debut = '`^DTSTART:([0-9]{4})([0-9]{2})([0-9]{2})T([0-9]{2])([0-9]{2])([0-9]{2])Z$`m';
$pcre_date_fin = '`^DTEND:([0-9]{4})([0-9]{2})([0-9]{2})T([0-9]{2])([0-9]{2])([0-9]{2])Z$`m';
$prce_evenement = '`^SUMMARY:Z$`m';
//initialisation des tableau de resultat
$result_date_debut = Array();
$result_date_fin = Array();
$result_evenement = Array();

//envoi des preg match
preg_match_all($pcre_date_debut, $contenuFichier, $result_date_debut, PREG_PATTERN_ORDER);
preg_match_all($pcre_date_fin, $contenuFichier, $result_date_fin, PREG_PATTERN_ORDER);
preg_match_all($pcre_evenement, $contenuFichier, $result_evenement, PREG_PATTERN_ORDER);

//affichage des tableaux a la volée...
print_r($result_date_debut);
echo "<br><hr><br>";
print_r($result_date_fin);
echo "<br><hr><br>";
print_r($result_evenement);

J'ai utilisé des preg_match_all sachant qu'il y en a plusieur dans le fichier ics :-D
Mais sa en marche pas :-(

Je vous remercierai de bien vouloir m'aider ;-)

1 réponse

ANexus
 
Salut,

Il existe la classe IcalCreator qui te fait déjà tout.

https://kigkonsult.se/iCalcreator/

Tu n'as plus qu'à utiliser la fonction parse et tu lui indiques l'url du fichier ics et il te retourne tous les différents éléments dans un tableau.

Have Fun :))
0