我的网站上有一张提交到我的电子邮件地址的表格;电子邮件的结构如下:
姓名: 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脚本中完成。
我正在努力弄清楚如何最好地做到这一点 - 我可以做一些想法。感谢。
答案 0 :(得分:1)
如果每次发送的电子邮件都是完全,您可以尝试两件事:
我会尝试用explode("\n", $body)
分割电子邮件的正文。
现在,数组的索引将包含一行电子邮件。你可以只分配一些字符来切断每一行(去掉字段名称),你就可以了。
答案 1 :(得分:0)
分割字符串的最佳方法是使用正则表达式。
在这种情况下,请使用:
$result = preg_split( "~(\w* )?\w*\: ~", $data);
正则表达式的说明:
~
只是字符串开头和结尾的分隔符。
第一个(\w* )?
部分匹配任意数量的单词(字母数字和_)字符后跟空格的零次或多次出现。下一个w*\:
匹配一个单词后跟一个:然后跟一个空格。
这匹配formdata的所有“标题”,因此将其拆分为所需。另请注意,格式化方式与http://example.com。
中的:不匹配