0

我正在使用这段绝对令人惊叹的代码:https ://github.com/plancake/official-library-php-email-parser/blob/master/PlancakeEmailParser.php

但它缺少的一件事是获取 From 电子邮件地址的能力。

我简单地添加了:

public function getFromEmail()
{
    if (!isset($this->rawFields['from']))
    {
        return false;
    }

    return $this->rawFields['from'];
}

但是我如何在它返回时只获得电子邮件地址部分:John Smith<john@gmail.com>

如果发件人地址只有,我还需要这个工作john@gmail.com吗?

感谢答案,这是完成的代码:

public function getFromEmail()
{
    $email = trim($this->rawFields['from']);

    if(substr($email, -1) == '>'){
        $fromarr = explode("<",$email);
        $mailarr1 = explode(">",$fromarr[1]);
        $email = $mailarr1[0];
    }

    return $email;
}
4

2 回答 2

2

这是一个非常简单的正则表达式:

$output = array();
preg_match("/.*<(.*?)>.*?/", $this->rawFields['from'], $output);
$email_address = $output[1];

但请注意:如果某人的姓名包含 < 或 >,则可能会导致安全漏洞。惰性运算符 (*.?) 用于确保使用最后一组 < >。

高温高压

PS:使用http://gskinner.com/RegExr/测试正则表达式!

于 2012-12-03T14:09:54.987 回答
0
$mailid='John Smith<john@gmail.com>';
$mailarr=explode("<",$mailid);
$mailarr1=explode(">",$mailarr[1]);
$just_emailid=$mailarr1[0];
于 2012-12-03T14:05:23.960 回答