Parser un fichier .ICS

networkingprogramming 1 Messages postés jeudi 17 avril 2008Date d'inscription 8 mai 2008 Dernière intervention - 8 mai 2008 à 16:55 - Dernière réponse : neigedhiver 2492 Messages postés jeudi 30 novembre 2006Date d'inscription 14 janvier 2011 Dernière intervention
- 8 mai 2008 à 18:50
Bonjour,

Je doit parser un fichier .ics de type :

BEGIN:VEVENT
DTSTAMP:20080321T083119Z
CREATED:20080321T083038Z
UID:688@campus.fr
LAST-MODIFIED:20080321T083038Z
DESCRIPTION:
SUMMARY:Projet N4
STATUS:CONFIRMED
DTSTART:20080305T130000Z
DTEND:20080305T170000Z
TRANSP:OPAQUE
END:VEVENT

BEGIN:VEVENT
DTSTAMP:20080321T083119Z
CREATED:20080321T083038Z
UID:659@campus.fr
LAST-MODIFIED:20080321T083038Z
DESCRIPTION:N4D21
SUMMARY:Anglais
LOCATION:A811
STATUS:CONFIRMED
DTSTART:20080325T091500Z
DTEND:20080325T110000Z
TRANSP:OPAQUE
END:VEVENT

BEGIN:VEVENT
DTSTAMP:20080321T083119Z
...

Dans le but d' utiliser les dates et heures des evenements.
C'est à dire que mon code php retournera:

tache 1 le :
2008 03 05
à  13:00
jusque 17:00

tache 2 le : 2008 03 25
à 09:15 jusque
11:00

 ...

J'essaye d'utiliser la fonction "preg_match_all" mais je n'arrive pas à l'utiliser correctement.

Voici mon debut de code:

<?php
    $contenuFichier = file_get_contents("fichier_ics.ics");
    $expressionRationnelle = " ? "; //je ne sais pas quoi mettre ici
    $resultat = Array();

    preg_match_all($expressionRationnelle, $contenuFichier, $resultat, PREG_PATTERN_ORDER);

    // $resultat devrait contenir toutes les séquences recherchées. On les affiche pour vérification :
    foreach ($resultat[0] as $numero => $date)
    {
        echo "tache $numero le$date";
    }
    ?>

merci d'avance.
Afficher la suite 

Votre réponse

1 réponse

neigedhiver 2492 Messages postés jeudi 30 novembre 2006Date d'inscription 14 janvier 2011 Dernière intervention - 8 mai 2008 à 18:50
0
Utile
Salut,

La principale question, est : que souhaites-tu récupérer dans ce fichier ?
Une seule PCRE ne te permettra pas de parser tout le fichier pour en tirer toutes les informations qu'il contient.
Si tu veux juste récupérer les dates :
$pcre1 = '`^DTSTART:([0-9]{4})([0-9]{2})([0-9]{2})T([0-9]{2])([0-9]{2])([0-9]{2])Z$`m';
$pcre2 = '`^DTEND:([0-9]{4})([0-9]{2})([0-9]{2})T([0-9]{2])([0-9]{2])([0-9]{2])Z$`m';

Ca retourne chaque morceau des dates. Dans l'ordre :
- année
- mois
- jour
- heure
- minutes
- secondes
<hr size="2" width="100%" />Neige

N'hésitez pas à lire la doc de PHP avant de poser des questions triviales...
Commenter la réponse de neigedhiver

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.