2010-09-16 47 views
1

我通过电子邮件收到有人提交的表单,该表单位于我付费宣传的网站上。使用PHP,我可以访问我的电子邮件帐户(IMAP),获取和阅读邮件,但是我无法从邮件正文中提取某些信息。我可以爆炸(\ n)正文,但无法弄清楚如何提取所需的信息来填充我的MYSQL插入函数中的变量。如何在字符串中查找变量?

使用爆炸()显示结果后看起来是这样的:

主题:: ADVERTISINGDOMAIN.COM - RSVP开放日查询 - 清单#839027
为:: [email protected]
ToName ::马修
从:: [email protected]
FROMNAME :: XYZ信息

RSVP开放参观

上市#:8390279
开放参观日期:2010年9月3日
名称:李四
电话:5555555555
电子邮件:[email protected]
点评:你好。我将在开放的房子......期待着与您见面并观看这个属性。谢谢。简

+5

马修 - 你能澄清一下你在找什么吗? – Rudu 2010-09-16 19:09:38

+0

你有没有使用正则表达式? – 2010-09-16 19:12:55

回答

0

如果使用使preg_split您可以通过分割你的数据:+和各部分进行

$str = <<<END 
Subjects :: ADVERTISINGDOMAIN.COM - RSVP Open House Inquiry - Listing #839027 
To :: [email protected] 
ToName :: Matthew 
From :: [email protected] 
FromName :: XYZ Leads 

RSVP for Open House 

Listing #: 8390279 
Open House Date: Sep 3, 2010 
Name: John Doe 
Phone: 5555555555 
Email: [email protected] 
Comments: Hi. I will be at the open house...looking forward to meeting you and viewing this property. Thanks. Jane 
END; 

$parts = explode("\n", $str); 

foreach($parts as $part) { 
    // split by :+ and unlimited spaces 
    $data = preg_split('~[:]+\s*~', trim($part), null, PREG_SPLIT_NO_EMPTY); 
    if (count($data)) { 
     $final_data[] = $data; 
    } 

} 
print_r($final_data); 

结果...

Array 
(
    [0] => Array 
     (
      [0] => Subjects 
      [1] => ADVERTISINGDOMAIN.COM - RSVP Open House Inquiry - Listing #839027 
     ) 

    [1] => Array 
     (
      [0] => To 
      [1] => [email protected] 
     ) 

    [2] => Array 
     (
      [0] => ToName 
      [1] => Matthew 
     ) 
... 

现在,如果您遍历数组必须分开每个数组的位置0的“变量名”和位置1的变量数据。如果他们不直接与表字段对齐,则可以创建一个将表单字段映射到表字段的数组。

+0

谢谢。使用preg_split我能够得到以下内容。这可以工作吗?我如何循环分配每个变量?这是我收到的输出。 Array([0] => ADVERTISINGDOMAIN.COM - RSVP开放查询 - 上市#839027 上市#[1] => 839027 开放日期[2] => 2010年9月3日 名称[3] => John Doe 电子邮件[4] => [email protected] 电话[5] => 555555555 评论[6​​] =>嗨,我会在开放的房子里......期待见到你并观看这个属性。谢谢。简 – Matthew 2010-09-16 22:26:23

1

好吧,每个字符串中使用explode()再次用limit,你会得到这样的字段:

$var = explode(':', 'Name: John Doe', 2); 

这会给你$var[0]包含的字段名称为Name$var[1]包含值作为John Doe。现在为每一行执行此操作,然后在查询中使用这些值。

+0

不知道我关注。我最初的爆炸是: $ body_lines = explode(“\ n”,$ body); \t \t unset($ dataTxt); ($ body_lines as $ x => $ line){ $ body_lines。= htmlspecialchars($ line)。 “
\ n”; 那么,现在我需要跟着这个? $ body_lines = explode(':',$ body_lines,2); – Matthew 2010-09-16 20:47:15

相关问题