0

メール パイプから詳細を取得しようとしています。パイプは、データの割り当てを含む $message 変数を返します。特定の値の文字列を検索し、次の「x」文字量を返すことができるようにしたいと考えています。

例として、私の変数$messageには以下の文字列が含まれています。

Arrived at Inbound Receiving occurred

on M03-Actros 33.50 (1231) (MX1) (LT) 1022 on 2012-12-03

16:36:04



               * Driver ID: person, RT (1231) 

                * Vehicle Desc: M03-Actros 33.50 (1234) (MX1) (LT) 

                * Vehicle ID: 1022 

                * Time Stamp: 2012-12-03 16:36:04 

                * Latitude: S31 11.870' 

                * Longitude: E031 44.555' 

                * Speed: 7 km/h 

                * Heading: 356 deg (N) 

                * Event ID: -48 

                * Event Desc: .Arrived at Inbound Receiving 

                * Event Value: -56

                * Event Value Type: 0 

次に、Event Desc を除外します。$message文字列 'Event Desc:' を検索し、その行の残りのデータを返します。上記の例から、変数 '$event' の値を '.Arrived at Inbound Recoming' に設定します。

私は私が使用しなければならないことを知っています

if (strstr($subject, 'Event Desc: ')) {

}

しかし、データの長さが異なる可能性があるため、残りのデータを行に返す方法がわかりません。

いつものように感謝します、ありがとう。

4

1 に答える 1

1

私はこれを提案します:

$event = null;
$lines = explode(PHP_EOL, $message);
foreach($lines as $line) {
  // skip empty lines
  if(strlen($line) == 0) {
    continue;
  }
  $tokens = explode(':', $line);
  // tokens[0] contains the key , e.g. Event Value
  // tokens[1]~[N] contains the value (where N is the number of pieces), e.g. -56
  // stitch token 1 ~ N
  $key = $tokens[0]; 
  unset($tokens[0]);
  $val = implode(':', $tokens);
  // do your extra logic here, e.g. set $event variable to value
  if(strpos($key, 'Event Desc') > -1) {
    $event = $val;
  }
}

制限: データに含めることはできません:

于 2012-12-04T08:40:13.703 に答える