PHP正则表达式来创建数组

PHP正则表达式来创建数组,php,regex,Php,Regex,我有一个从iCal中提取的字符串,它输出描述。我希望每次都进行描述,并使用我需要的对象创建一个数组。他们总是遵循相同的模式 例如,我有: Description: Trip status: Confirmed\n \n FLIGHT INFORMATION: \n \n United Airlines UA 485: \n \n \n From: Newark Liberty International (New York, USA) - TerminalC at Fri, Sep 28, 20

我有一个从iCal中提取的字符串,它输出描述。我希望每次都进行描述,并使用我需要的对象创建一个数组。他们总是遵循相同的模式

例如,我有:

Description: Trip status: Confirmed\n \n FLIGHT INFORMATION: \n \n United Airlines UA 485: \n \n \n From: Newark Liberty International (New York, USA) - TerminalC at Fri, Sep 28, 2012 16:34 (local time) \n To: Denver International (Denver, USA) at Fri, Sep 28, 2012 18:47 (local time) \n Cabin: Economy Restricted\n Duration: 04:13\n Stop(s): 0\n Aircraft: Boeing 757-200\n
然后

Description: Trip status: Confirmed\n \n FLIGHT INFORMATION: \n \n Air Canada AC 1072: \n \n \n From: Denver International (Denver, USA) at Sat, Sep 29, 2012 10:55 (local time) \n To: P Trudeau International (Montreal, Canada) at Sat, Sep 29, 2012 16:29 (local time) \n Cabin: Economy Restricted\n Duration: 03:34\n Stop(s): 0\n Aircraft: Airbus Industrie A319\n
正如您所见,不同的输出遵循相同的结构,因此在理想世界中,我希望:

$itinery[0]: Confirmed
$itinery[1]: United Airlines UA 485
$itinery[2]: Newark Liberty International (New York, USA)
感谢您一如既往的指导


谢谢。

你也可以用explode()将每一行分开


然后用explode($part[$i],“:”)分解这些部分以获得值。

更具体的正则表达式:

描述:\s*行程\s+状态:\s+(\w+)\s*航班\s+信息:\s*([^:]+):\s*发件人:\s*([\w\d\s-())+)\s+at\s+(?:Sun | Mon | Tue | Wed | Thu | Fri | Sat)

作出以下假设:

  • “状态”只能包含字母。
  • “航班信息”应该以
  • “from”只能包含字母、数字、其中一个字符
    \uu-(
    )或空白字符。“from”后面紧接着这个序列:“at XXX”,其中XXX是一天(即太阳、周一、周二、周三、周四、周五或周六)
提示:

如果状态属于已关闭列表,则将正则表达式中的
(\w+)
替换为
(?:确认|取消|延迟)
。如有必要,添加其他状态。

我确实进行了分解,因为有一个实例:“\n”然后还有“\n\n”以及随后的“\n\n”-因此我必须清理每个数组元素。我想知道是否有更简单的方法来实现这一点…谢谢Stephan。。如何在php中编写此代码以生成数组?请使用函数。既然我已经给了你最难的部分,我把最后的PHP代码留给你作为练习;)
$parts = explode ( $line, '\n' ) ;
print_r ( $parts ) ;