我通过电子邮件收到线索,当有人提交一个表单,驻留在一个网站上,我付费做广告。使用PHP,我可以访问我的电子邮件帐户(IMAP),获取和阅读邮件,但我在从电子邮件正文中提取某些信息时遇到了麻烦。我可以分解(\n)主体,但不知道如何提取所需的信息来填充MYSQL插入函数中的变量。
使用explode()后,显示结果如下所示:
主题::ADVERTISINGDOMAIN.COM - RSVP开放查询-列表#839027
收件人::xyzleads@mydomainname.com
马修::ToName
来自::adwebsite@advertisingdomain.com
FromName ::XYZ引线
开放参观的RSVP
清单#:8390279
开放日期:2010年9月3日
姓名:无名氏
电话: 5555555555
电子邮件: johndoe@domain.com
评论:嗨。我将在开放的house...looking前进,以满足您和查看此属性。谢谢。简
发布于 2010-09-17 03:19:54
好的,在每个带有limit的字符串上再次使用explode(),你会得到如下的字段:
$var = explode(':', 'Name: John Doe', 2);这将为您提供包含字段名称为Name的$var[0]和包含值为John Doe的$var[1]。现在对每一行执行此操作,然后在查询中使用这些值。
发布于 2010-09-17 03:19:40
如果您使用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。如果它们不直接与表字段对齐,则可以创建一个将表单字段映射到表字段的数组。
https://stackoverflow.com/questions/3729886
复制相似问题