2011-11-30 52 views
0

我有我的网站上提交给我的电子邮件地址的形式;电子邮件的结构如下:导出电子邮件的形式数据到数据库

名称:约翰·史密斯

地址1: 1国王路

地址2:国王广场

市:伦敦

邮编: SW1

询价型号:一般查询

网站:http://www.stackoverflow.com

电子邮件: [email protected]

详情: Lorem存有dolor sit amet,consectetur adipisicing elit,sed do eiusmod tempor incididunt ut labore et dolore magna aliqua。 UT enim 广告微量veniam,QUIS nostrud实习ullamco laboris暂准UT斯达康 aliquip前EA commodo consequat。

Duis aute irure dolor in rennederit in voluptate velit esse cillum dolore eu fugiat nulla pariatur。 Excepteur烧结靶occaecat cupidatat非proident,必须遵守在 过失魁正式开通了deserunt mollit阿尼姆ID EST laborum

这是怎么到达我在我的收件箱。我有几封电子邮件 - 我需要将这些电子邮件中的数据导出到我的数据库中。我拥有数据库中设置的所有字段(名称,地址1等),所以现在我需要做的是从电子邮件中提取每段数据。

我已经设置了一个文本字段的形式 - 的想法是,我复制和电子邮件的内容粘贴到文本区域,然后提交表单。数据的处理将在PHP脚本中完成。

我竭力要弄清楚如何最好地做到这一点 - 我能有一些想法做。谢谢。

回答

1

如果电子邮件会在每次正是这样来的,就可以尝试两件事情:

  1. 正则表达式。这会有点令人讨厌,但它应该用足够的血液完成工作。
  2. 盲解析。我喜欢这种方法,这是我会尝试和描述的。

我想尝试拆分电子邮件的身体explode("\n", $body)

现在,该数组的索引将包含您的电子邮件的一行。你可以分配一些字符来切断每一行(去除字段名称),并且你已经设置好了。

+0

你好,我看起来不错。我想知道是否有任何方法可以查找数据中的字段(例如Name,Address 1,Address 2)并将它们分配给数组的特定键?而类似的任何字段名称后将是关键的价值... – GSTAR

0

分割字符串的最佳方法是使用正则表达式

在这种情况下,使用方法:

$result = preg_split("~(\w*)?\w*\: ~", $data); 

正则表达式的说明: 的~仅仅是分隔符的开始和结束的字符串。 第一个(\w*)?部分匹配零个或多个出现的任意数量的字(字母数字和_)字符后跟一个空格。接下来的w*\:匹配一个单词后跟一个:然后跟一个空格。

这匹配formdata的所有'标题',从而将它按需分割。另请注意,这是格式化的,使得您不符合:在http://example.com中。

+0

干杯,我只是尝试了这一点,但我得到了一个解析错误 - 任何想法为什么? :) – GSTAR

+0

哦,对不起。我忘了在正则表达式字符串周围加引号。答案现在更新;)。 – Qqwy

相关问题