2010-04-25 42 views
0

我需要幫助創建一個正則表達式來將所有值放入一個數組!PHP - preg_match_all - iCalendar - REGEX

假設我們有一個巨大的文件全theese的:

經典的iCalendar風格:

,所以我們知道,每個段開始BEGIN:VEVENT結束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 
... 

使用preg_match_all,我認爲這是做這件事的最佳選擇,什麼是正則表達式可以將所有的值存入數組!

PS:段之間沒有換行符,這只是例如!

編輯: 只是爲了澄清我想達到這樣的結果:

 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 
       (

... 
       ) 
    ... 

     ) 

感謝對所有的時間!

問候 盧卡Filosfi

回答

1

爲什麼要使用正則表達式?

這聽起來像是一個工作explode()和一點清理。

+0

你以爲我可以爆炸2MB的這些段!?爆炸之前,我想把每個片段放入數組!或者我以錯誤的方式做到這一點!? – 2010-04-25 21:06:58

+1

爆炸比正則表達式快,所以如果你擔心尺寸和性能,'爆炸'是要走的路。鑑於格式非常簡單,這可能就足夠了。 – 2010-04-25 21:08:35

+0

是的,你是正確的朋友! ;-)這很簡單!可能夠了,那我想了! ;-)有時會發生!我要求簡單的問題!衛生署! %-) 謝謝! – 2010-04-25 21:17:43