【问题标题】:PHP - preg_match_all - iCalendar - REGEXPHP - preg_match_all - iCalendar - 正则表达式
【发布时间】:2010-07-21 16:27:50
【问题描述】:

我需要帮助创建一个将所有值放入数组的正则表达式!

假设我们有一个充满这些的巨大文件:

经典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
                (

...
                )
    ...

        )

感谢大家的时间!

问候 卢卡·菲洛斯菲

【问题讨论】:

    标签: php regex icalendar


    【解决方案1】:

    为什么要使用正则表达式?

    这听起来像是 explode() 的工作和一些清理工作。

    【讨论】:

    • 你认为我可以爆炸 2MB 的这些片段!?在爆炸之前我想把每个段放入数组中!还是我做错了!?
    • 爆炸比正则表达式更快,所以如果你担心大小和性能,explode 是要走的路。而且鉴于格式很简单,大概就够了。
    • 是的,你是对的朋友! ;-) 这很简单!可能就够了,我想! ;-) 有时会发生!我要求的只是问题!哦! %-) 谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-12
    • 2014-02-24
    • 2016-08-08
    • 1970-01-01
    相关资源
    最近更新 更多