2010-04-25 43 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