如何在字符串中查找变量?

时间:2010-09-16 19:08:09

标签: php string imap

当有人提交一张存放在我支付广告费用的网站上的表格时,我会通过电子邮件收到潜在客户。使用PHP,我可以访问我的电子邮件帐户(IMAP),获取和阅读邮件,但我无法从电子邮件正文中提取某些信息。我可以爆炸(\ n)身体,但无法弄清楚如何提取所需信息以填充我的MYSQL插入函数中的变量。

使用explode()显示结果后如下所示:

主题:: ADVERTISINGDOMAIN.COM - RSVP开放日查询 - 上市#839027
To :: xyzleads@mydomainname.com
ToName :: Matthew
来自:: adwebsite@advertisingdomain.com
FromName :: XYZ Leads

RSVP for Open House

上市#:8390279
开放日期:2010年9月3日
姓名:John Doe
电话:5555555555
电子邮件:johndoe@domain.com
评论:嗨。我将在开放日...期待见到你并查看这个属性。谢谢。简

2 个答案:

答案 0 :(得分:1)

好的,在explode()的每个字符串上再次使用limit,您将获得如下字段:

$var = explode(':', 'Name: John Doe', 2);

这将为您$var[0]提供包含Name的字段名称和$var[1],其中包含John Doe的值。现在对每一行执行此操作,然后使用查询中的值。

答案 1 :(得分:0)

如果您使用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处的变量数据。如果它们不直接与表字段对齐,则可以创建一个将表单字段映射到的数组表格字段。