我正在使用这段绝对惊人的代码: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;
}
答案 0 :(得分:2)
这是一个非常简单的正则表达式:
$output = array();
preg_match("/.*<(.*?)>.*?/", $this->rawFields['from'], $output);
$email_address = $output[1];
小心:如果某人的名字包含&lt;或者&gt;它可能会导致安全漏洞。惰性运算符(*。?)用于确保最后一组&lt; &GT;使用。
HTH
PS:使用http://gskinner.com/RegExr/测试正则表达式!
答案 1 :(得分:0)
$mailid='John Smith<john@gmail.com>';
$mailarr=explode("<",$mailid);
$mailarr1=explode(">",$mailarr[1]);
$just_emailid=$mailarr1[0];