0

私は、電子メールを介して着信トラフィック更新レポートを取得し、その中の関連情報を抽出してデータベースに保存する電子メール配管phpスクリプトをプログラムしようとしています。

電子メールは通常、いくつかの紹介から始まり、重要な情報が次の形式で表示されます。

Highway : Some Highway 
Time : 08-Oct-2010 08:10 AM 
Condition : Smooth (or slow moving etc)

このコードで試してみました

preg_match_all('/(?P<\name>\w+) : (?P<\data>\w+)/i', $subject, $result);

</は実際には<であることに注意してください。しかし、どういうわけか、ここには表示されていません。

そして、試合は次のとおりです。

Highway : Some
Datetime : 08
Condition : Smooth

誰かが私の2番目の正規表現に欠けているものを教えてもらえますか?「:」の後に単語の文字列全体が含まれないのはなぜですか?

4

1 に答える 1

1

キャプチャして\w+います。これは単語の文字にのみ一致します。これにはスペースや括弧は含まれません。

試す

preg_match_all('/(?P<name>\w+)\s*:\s*(?P<data>.*)/i', $subject, $result);

使用してみてください.*?これは改行文字までのすべてに一致します

于 2010-10-08T04:26:46.490 に答える