当有人提交一张存放在我支付广告费用的网站上的表格时,我会通过电子邮件收到潜在客户。使用PHP,我可以访问我的电子邮件帐户(IMAP),获取和阅读邮件,但我无法从电子邮件正文中提取某些信息。我可以爆炸(\ n)身体,但无法弄清楚如何提取所需信息以填充我的MYSQL插入函数中的变量。
使用explode()显示结果后如下所示:
主题:: ADVERTISINGDOMAIN.COM - RSVP开放日查询 - 上市#839027
To :: xyzleads@mydomainname.com
ToName :: Matthew
来自:: adwebsite@advertisingdomain.com
FromName :: XYZ Leads
RSVP for Open House
上市#:8390279
开放日期:2010年9月3日
姓名:John Doe
电话:5555555555
电子邮件:johndoe@domain.com
评论:嗨。我将在开放日...期待见到你并查看这个属性。谢谢。简
答案 0 :(得分:1)
好的,在explode()
的每个字符串上再次使用limit
,您将获得如下字段:
$var = explode(':', 'Name: John Doe', 2);
这将为您$var[0]
提供包含Name
的字段名称和$var[1]
,其中包含John Doe
的值。现在对每一行执行此操作,然后使用查询中的值。
答案 1 :(得分:0)
如果您使用preg_split,您可以通过以下方式拆分数据:+并将每个部分分开
$str = <<<END
Subjects :: ADVERTISINGDOMAIN.COM - RSVP Open House Inquiry - Listing #839027
To :: xyzleads@mydomainname.com
ToName :: Matthew
From :: adwebsite@advertisingdomain.com
FromName :: XYZ Leads
RSVP for Open House
Listing #: 8390279
Open House Date: Sep 3, 2010
Name: John Doe
Phone: 5555555555
Email: johndoe@domain.com
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] => xyzleads@mydomainname.com
)
[2] => Array
(
[0] => ToName
[1] => Matthew
)
...
现在,如果循环遍历该数组,则将“变量名称”作为每个数组的位置0和位置1处的变量数据。如果它们不直接与表字段对齐,则可以创建一个将表单字段映射到的数组表格字段。