preg_match_all email' To'价值空

时间:2014-04-22 09:18:22

标签: php email preg-match-all

我有一个保存在文件中的电子邮件

Date: Wed, 9 Apr 2014 14:33:11 +0000
Return-Path: x.com
To: personsEamilAddress@email.com
From: x
Subject: Hello world
Message-ID: <x>
X-Priority: 3
X-Mailer: PHPMailer 5.1 (phpmailer.sourceforge.net)
Sender: senderEmail@mail.com
MIME-Version: 1.0
Content-Type: text/html; charset="iso-8859-1"
X-SES-Outgoing: 2014.04.09-54.240.8.56
Content-Transfer-Encoding: quoted-printable

我想弄清楚电子邮件发送给谁?即 personsEamilAddress@email.com

我已经尝试了

preg_match_all('/To: (.*?)/', $subject, $result, PREG_SET_ORDER);
print_r($result);

但打印出来的数组并不包含电子邮件地址的值。

Array
(
    [0] => Array
        (
            [0] => To: 
            [1] => 
        )

    [1] => Array
        (
            [0] => To: 
            [1] => 
        )

)

2 个答案:

答案 0 :(得分:0)

您的问题是搜索组中的?

此外,最后的s修饰符让您选择.包含换行符和空格的所有内容。

解决方案因此是:

%^To: (.*)%m

m修饰符会导致^$匹配每行的开头/结尾(不仅是字符串的开头/结尾)

答案 1 :(得分:0)

您是否尝试过:

preg_match_all('/To: (.*)?/', $subject, $result, PREG_SET_ORDER);
print_r($result);

它应该返回:

Array
(
[0] => Array
    (
        [0] => To: personsEmailAddress@email.com
        [1] => personsEmailAddress@email.com
    )
)