将电子邮件表单数据导出到数据库

时间:2011-11-30 17:56:05

标签: php

我的网站上有一张提交到我的电子邮件地址的表格;电子邮件的结构如下:

  

姓名: John Smith

     

地址1: 1 Kings Road

     

地址2: Kings Place

     

城市伦敦

     

邮政编码: SW1

     

查询类型:一般查询

     

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

     

电子邮件: john@gmail.com

     

详细信息: Lorem ipsum dolor sit amet,consectetur adipisicing elit,sed   做eiusmod tempor incididunt ut labore et dolore magna aliqua。恩惠   ad minim veniam,quis nostrud exercitation ullamco laboris nisi ut   aliquip ex ea commodo consequat。

     

Duis aute irure dolor in repreptderit in voluptate velit esse cillum dolore eu fugiat nulla   pariatur。 Excepteur sint occaecat cupidatat non proident,sunt in   culpa qui officia deserunt mollit anim id est laborum

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

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

我正在努力弄清楚如何最好地做到这一点 - 我可以做一些想法。感谢。

2 个答案:

答案 0 :(得分:1)

如果每次发送的电子邮件都是完全,您可以尝试两件事:

  1. 正则表达式即可。它会有点讨厌,但应该用足够的血来完成工作。
  2. 盲解析。我喜欢这种方法,这是我将尝试和描述的方法。
  3. 我会尝试用explode("\n", $body)分割电子邮件的正文。

    现在,数组的索引将包含一行电子邮件。你可以只分配一些字符来切断每一行(去掉字段名称),你就可以了。

答案 1 :(得分:0)

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

在这种情况下,请使用:

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

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

这匹配formdata的所有“标题”,因此将其拆分为所需。另请注意,格式化方式与http://example.com

中的:不匹配