0

説明を出力する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)

これまでと同じように、どんなガイダンスも高く評価されます。

ありがとう。

4

2 に答える 2

0

また、explode() を使用して各行を分割することもできます。

$parts = explode ( $line, '\n' ) ;
print_r ( $parts ) ;

次に、explode ( $part[$i], ':' ) でパーツを分割して値を取得します。

于 2012-09-20T09:03:52.443 に答える
0

より具体的な正規表現:

説明:\s*旅行\s+ステータス:\s+(\w+)\s*フライト\s+情報:\s*([^:]+):\s*出発地:\s*([\w\ d_,\s-()]+)\s+at\s+(?:日|月|火|水|木|金|土),

次の仮定が行われます。

  • 「ステータス」には文字のみを含めることができます。
  • 「フライト情報」は:
  • 「from」には、文字、数字、それらの文字の_,-()いずれか、または空白文字のみを含めることができます。"from" の直後に次のシーケンスが続きます: " at XXX" ここで、XXX は日 (すなわち、Sun、Mon、Tue、Wed、Thu、Fri または Sat) です。

ヒント :
status がクローズド リストに属している場合は、正規表現で に(\w+)置き換えます。(?:Confirmed|Cancelled|Delayed)必要に応じて他のステータスを追加します。

于 2012-09-20T09:06:40.420 に答える