【问题标题】:Exporting email form data to a database将电子邮件表单数据导出到数据库
【发布时间】:2011-12-01 02:25:29
【问题描述】:

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

姓名:约翰·史密斯

地址 1: 1 Kings Road

地址 2: 国王广场

城市:伦敦

邮政编码: 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 reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla 偏执。 Exceptioneur sint occaecat cupidatat non proident, sunt in 过失 qui officia deserunt mollit anim id est labourum

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

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

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

【问题讨论】:

    标签: php


    【解决方案1】:

    如果电子邮件每次都完全像这样进入,您可以尝试两件事:

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

    我会尝试用explode("\n", $body) 拆分电子邮件的正文。

    现在,数组的索引将包含您的电子邮件的一行。您只需为每一行分配一些字符(以去除字段名称)即可。

    【讨论】:

    • 嗨,伙计,我觉得这很好。我想知道您是否知道我可以让它在数据中查找字段(例如名称、地址 1、地址 2)并将它们分配给数组的特定键?同样,字段名称之后的任何内容都将是键的值...
    【解决方案2】:

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

    在这种情况下,使用:

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

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

    这匹配表单数据的所有“标题”,从而根据需要拆分它。另请注意,它的格式与 http://example.com 中的 : 不匹配。

    【讨论】:

    • 干杯,我只是在尝试这个,但我得到了一个解析错误 - 知道为什么吗? :)
    • 哦,对不起。我忘了在正则表达式字符串周围加上引号。答案现已更新;)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-30
    • 2014-12-08
    • 2018-06-05
    • 2012-05-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多