2010-04-25 7 views
0

J'ai besoin d'aide pour créer une regex pour mettre toutes les valeurs dans un tableau!PHP - preg_match_all - iCalendar - REGEX

en supposant que nous avons un énorme dossier complet de theese:

classique de style iCalendar:

Nous savons donc que chaque segment commencer avec BEGIN:VEVENT et fin avec END:VEVENT

... 
END:VEVENT 

BEGIN:VEVENT 
UID:e3cafdf3-c5c7-427e-b8c3-653015e9321a 
SUMMARY:Some Text Here 
DESCRIPTION:Some Text Here\n555-555-555 
ORGANIZER;CN=Some/Text/Here 
DTSTART;TZID="Some/Text/Here":20100802T190000 
DTEND;TZID="Some/Text/Here":20100802T193000 
STATUS:CONFIRMED 
CLASS:PUBLIC 
X-MICROSOFT-CDO-INTENDEDSTATUS:BUSY 
TRANSP:OPAQUE 
X-MICROSOFT-DISALLOW-COUNTER:TRUE 
DTSTAMP:20100423T021222Z 
SEQUENCE:1 
END:VEVENT 

BEGIN:VEVENT 
... 

en utilisant preg_match_all que je pense est le meilleur choix pour ce faire, quelle est la regex qui peut contenir toutes ces valeurs dans le tableau !? PS: entre les segments, il n'y a pas de rupture de ligne, c'est juste par exemple!

ÉDITÉE: juste pour clarifier je veux obtenir un résultat comme celui-ci:

 Array 
     (
      [0] => Array 
       (
       [0] => ' 
UID:e3cafdf3-c5c7-427e-b8c3-653015e9321a 
SUMMARY:Some Text Here 
DESCRIPTION:Some Text Here\n555-555-555 
ORGANIZER;CN=Some/Text/Here 
DTSTART;TZID="Some/Text/Here":20100802T190000 
DTEND;TZID="Some/Text/Here":20100802T193000 
STATUS:CONFIRMED 
CLASS:PUBLIC 
X-MICROSOFT-CDO-INTENDEDSTATUS:BUSY 
TRANSP:OPAQUE 
X-MICROSOFT-DISALLOW-COUNTER:TRUE 
DTSTAMP:20100423T021222Z 
SEQUENCE:1 
        ' 
       ) 

      [1] => Array 
       (

... 
       ) 
    ... 

     ) 

remercient à tout pour le moment!

Cordialement Luca Filosfi

Répondre

1

Pourquoi utiliser des expressions régulières?

Cela ressemble à un travail pour explode() et un peu de nettoyage.

+0

vous pensez que je peux exploser 2MB de ces segments? avant d'exploser je veux mettre chaque segment en tableau! ou je le fais dans le mauvais sens !? –

+1

Exploding est plus rapide que regex, donc si vous êtes préoccupé par la taille et la performance, «exploser» est la voie à suivre. Et étant donné que le format est assez simple, c'est probablement suffisant. –

+0

Oui, vous avez raison mon pote! ;-) c'est assez simple! probablement assez alors j'ai pensé! ;-) arrive parfois! que je demande simplement des problèmes! Doh! %-) Merci! –