我需要一个正则表达式来解析一段文本。基本上假设我们有文本文件,每个文本文件都包含随机文本,但在文本中会有以下格式的行 - 基本上它们是表示飞行腿的格式。
例如:
13FEB2009 BDR7402 1000 UUBB 1020 UUWW FLT
这一行文字总是在一行
第一个单词是DDMMMYYYY
格式的日期第二个单词可以是任意长度并保留字母数字字符
第三个字是HHMM格式的时间 - 它总是数字
第四个字是位置代码 - 它几乎总是只是字母,但也可能是字母数字
第五个字是格式HHMM的到达时间 - 它总是数字
第六个字是位置代码 - 它几乎总是只是字母,但也可能是字母数字
同一行后面的任何单词都只是定义
文本文件可能包含大量随机文本信息中的一行或多行文本。
我需要一种方法来提取所有这些信息,即文本文件中的这些行,并将它们与它们的整体部分一起存储,如关联数组中所提到的那样分开,所以我有这样的东西:
array('0'=>array('date'=>'', 'time-dept'=>'', 'flightcode'=>'',....))
我假设正则表达式在这里是有序的。我正在使用php - 非常感谢帮助人员:)
答案 0 :(得分:2)
我无法测试这个,而且我的PHP很生疏,但我认为这应该可以满足您的需求:
foreach ($lines as &$line) {
$matchcount = preg_match('/([0-9]{2}[A-Z]{3}[0-9]{4}) ([A-Z0-9]+) ([0-9]{4}) ([A-Z0-9]+) ([0-9]{4}) ([A-Z0-9]+)/', $line, $matches);
if ($matchcount > 0) {
$flight_data = array('date'=>$matches[1], 'flightcode'=>$matches[2], 'time-dept'=>$matches[3], 'loc1'=>$matches[4], 'time-arrv'=>$matches[5], 'loc2'=>$matches[6]);
// then do something with flight_data here
}
}
编辑:修正了失踪的美元布伦丹被抓住了。谢谢!
答案 1 :(得分:0)
可能是函数fgetcsv和str_getcsv可以帮助你。
$str_data = "blablabal";
$ar_data = str_getcsv($str_data, ' ', '');
然后你使用这个$ ar_data数组作为索引数组。