如何提取电子邮件&使用PHP从完整电子邮件文本中命名?

时间:2012-01-23 14:51:14

标签: php string email

我有一个字符串

$email_string='Aslam Doctor <aslam.doctor@gmail.com>';

我想从中提取姓名&amp;用PHP发邮件?这样我才能得到

$email='aslam.doctor@gmail.com';
$name='Aslam Doctor'

提前致谢。

5 个答案:

答案 0 :(得分:6)

尽管人们可能会推荐正则表达式,但我会说使用explode()。 爆炸使用任何分隔符将字符串拆分为多个子字符串。 在这种情况下,我使用'&lt;'作为分隔符,立即删除名称和电子邮件之间的空格。

$split = explode(' <', $email_string);
$name = $split[0];
$email = rtrim($split[1], '>');

rtrim()会修剪'&gt;'字符串末尾的字符。

答案 1 :(得分:6)

使用explode + list

$email_string = 'Aslam Doctor <aslam.doctor@gmail.com>';
list($name, $email) = explode(' <', trim($email_string, '> '));

答案 2 :(得分:1)

如果您可以使用IMAP扩展程序,则只需imap_rfc822_parse_adrlist功能即可。

/ via https://stackoverflow.com/a/3638433/204774

答案 3 :(得分:0)

文本变量有一个段落。其中包含两封电子邮件。使用extract_emails_from_string()函数,我们从该段落中提取那些邮件。 preg_match_all函数将从输入中返回所有带有正则表达式的匹配字符串。

function extract_emails_from_string($string){
  preg_match_all("/[\._a-zA-Z0-9-]+@[\._a-zA-Z0-9-]+/i", $string, $matches);
  return $matches[0];
}


$text = "Please be sure to answer the Please arun1@email.com be sure to answer the Please be sure to answer the Please be sure to answer the Please be sure to answer the Please be sure to answer the Please be sure to answer the  arun@email.com";
$emails = extract_emails_from_string($text);
print(implode("\n", $emails));

答案 4 :(得分:0)

这就是我使用的-适用于带有或不带有尖括号格式的电子邮件地址。因为我们是从右到左搜索的,所以它也适用于名称段实际上包含<字符的那些奇怪的实例:

$email   = 'Aslam Doctor <aslam.doctor@gmail.com>';
$address = trim(substr($email, strrpos($email, '<')), '<>');