电子邮件阅读PHP

问题描述:

我需要从此电子邮件中读取字段

MOVE INFORMATION

Pickup Address: 34 Marigold Ln, Marlboro, NJ 07746

Delivery Address: 180 Prospect Park W, Apt 5, Brooklyn, NY 11215

Primary service dates:
Pack Date: N/A
Move Date: 6/6/2013

Other service dates:
Pack Date 2: N/A
Move Date2: N/A
Other Date: N/A

我的关注是:


  1. 通过IMAP连接

  2. 获取信息主体

现在我想读取指定的数据,需要将其转换为数组:

Now I want to read specified data and need to convert it into array like:

array( ' Pickup Address'=>'34 Marigold Ln, Marlboro, NJ 07746', 
       'Delivery Address'=>'180 Prospect Park W, Apt 5, Brooklyn, NY 11215'...)

我尝试过 preg_match ?P

但是有一些问题:


  1. 不接受接收地址中的空格

  2. 它提供 Array([0] =>地址:34 [PickupAddress] =>地址[1] =>地址[DeliveryAddress] => 34 [2] => 34)格式。

  1. It is not accepting space in 'Pickup Address'
  2. it is providing array in Array ( [0] => Address: 34 [PickupAddress] => Address [1] => Address [DeliveryAddress] => 34 [2] => 34 ) format.

基本上,我需要在数据库中保存这些字段, 。

Basically I need to save these fields in database and I can not use attachment here. Let me know if you have any other solution or any way to make it work

这样的东西吗?

$string = 'MOVE INFORMATION

Pickup Address: 34 Marigold Ln, Marlboro, NJ 07746

Delivery Address: 180 Prospect Park W, Apt 5, Brooklyn, NY 11215

Primary service dates:
Pack Date: N/A
Move Date: 6/6/2013

Other service dates:
Pack Date 2: N/A
Move Date2: N/A
Other Date: N/A';

preg_match_all('#(.*?):(.*)#m', $string, $m);
if(isset($m[1], $m[2])){
    $array = array_combine($m[1], $m[2]);
    print_r($array);
}

输出

Array
(
    [Pickup Address] =>  34 Marigold Ln, Marlboro, NJ 07746
    [Delivery Address] =>  180 Prospect Park W, Apt 5, Brooklyn, NY 11215
    [Primary service dates] => 
    [Pack Date] =>  N/A
    [Move Date] =>  6/6/2013
    [Other service dates] => 
    [Pack Date 2] =>  N/A
    [Move Date2] =>  N/A
    [Other Date] =>  N/A
)