开发者

Need a regular expression to parse a text body

I need a regular expression to parse a body of text. Basically assume this that we have text files and each of which contains random text but within the text there would be lines in the following formats - basically they are a format for denoting flight legs.

eg:

13FEB2009 BDR7402 1000 UUBB 1020 UUWW FLT

This line of text is always on one line

The first word is a date in the format DDMMMYYYY

Second word could be of any length and hold alphanumeric characters

third word is the time in format HHMM - its always numeric

fourth word is a location code - its almost always just alphabets but could also be alphanumeric

fifth word is the arrival time in format HHMM - its always numeric

sixth word is a location code - its almost always just alphabets but could also be alphanumeric

Any words which follow on the same line are just definitions

A text file may contain among lots of random text information one or more such lines of text.

I need a way to be able to extract all this information i.e just these lines within a text file and store them with thei开发者_JS百科r integral parts separated as mentioned in an associative array so I have something like this:

array('0'=>array('date'=>'', 'time-dept'=>'', 'flightcode'=>'',....))

I'm assuming regular expressions would be in order here. I'm using php for this - would appreciate the help guys :)


I'm not in a position to test this, and my PHP is rusty, but I think this should do what you need:

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
  }
}

Edit: Fixed the missing $'s Brendan caught. Thanks!


May be functions fgetcsv and str_getcsv helps you.

$str_data = "blablabal";
$ar_data = str_getcsv($str_data, ' ', '');

And then you use this $ar_data array, as indexed array.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜