我有一个从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)
赞赏任何指导。
感谢。
答案 0 :(得分:0)
你也可以用explode()
分开每一行$parts = explode ( $line, '\n' ) ;
print_r ( $parts ) ;
然后用爆炸($ part [$ i],':')打破部件以获取值。
答案 1 :(得分:0)
更具体的正则表达式:
描述:\ S *跳闸\ S +状态:\ S +(\ W +)\ S * FLIGHT \ S + INFORMATION:\ S *([^:] +):\ S *来源:\ S *([ \ W \ d _,\ S - (+)] +)\ S +在\ S +(?:太阳|周一|星期二|星期三|星期四|星期五| SAT)
做出以下假设:
:
_,-()
或空白字符。 “from”紧接着是这个序列:“在XXX”,其中XXX是一天(即太阳,周一,周二,周三,周四,周五或周六)。 提示:
如果状态属于已关闭的列表,请在正则表达式中将(\w+)
替换为(?:Confirmed|Cancelled|Delayed)
。如有必要,请添加其他状态。