【问题标题】:How do I find variables in a string?如何在字符串中查找变量?
【发布时间】:2011-04-13 09:27:06
【问题描述】:

当有人提交驻留在我付费投放广告的网站上的表单时,我会通过电子邮件收到潜在客户。使用 PHP,我可以访问我的电子邮件帐户 (IMAP),获取和阅读邮件,但我无法从电子邮件正文中提取某些信息。我可以分解 (\n) 正文,但不知道如何提取所需的信息来填充我的 MYSQL 插入函数中的变量。

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

主题 :: ADVERTISINGDOMAIN.COM - RSVP 开放日查询 - 清单 #839027
到 :: xyzleads@mydomainname.com
ToName :: 马修
来自 :: adwebsite@advertisingdomain.com
FromName :: XYZ 潜在客户

开放日回复

列表编号:8390279
开放日日期:2010 年 9 月 3 日
姓名:约翰·多伊
电话:5555555555
电子邮件:johndoe@domain.com
评论:你好。我将在开放日...期待与您会面并查看此属性。谢谢。简

【问题讨论】:

  • Matthew - 你能澄清一下你在找什么吗?
  • 你用过正则表达式吗?

标签: php string imap


【解决方案1】:

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

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

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

【讨论】:

  • 不确定我是否关注。我最初的爆炸是: $body_lines = explode("\n", $body);未设置($dataTxt); foreach ($body_lines as $x => $line) { $body_lines .= htmlspecialchars($line) 。 "
    \n";那么,现在我需要遵循这个吗? $body_lines = explode(':', $body_lines, 2);
【解决方案2】:

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

【讨论】:

  • 谢谢。使用 preg_split 我能够得到以下结果。这能行吗?如何循环将每个分配给一个变量?这是我收到的输出。数组 ( [0] => ADVERTISINGDOMAIN.COM - RSVP 开放日查询 - 清单 #839027 清单 # [1] => 839027 开放日日期 [2] => 2010 年 9 月 3 日名称 [3] => John Doe 电子邮件 [4 ] => johndoe@domain.com 电话 [5] => 555555555 评论 [6] => 您好。我将在开放日...期待与您见面并查看此属性。谢谢。简
猜你喜欢
  • 2018-08-27
  • 2023-03-29
  • 1970-01-01
  • 1970-01-01
  • 2015-01-22
  • 1970-01-01
  • 2020-11-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多