从邮箱字符串获取电子邮件地址

时间:2010-09-03 18:07:07

标签: php regex email

我需要从此邮箱字符串中提取电子邮件地址。 我想到str_replace,但显示名称和电子邮件地址不是静态的,所以我不知道如何使用正则表达式来做这件事。

示例:“My name <email@example.com>”应生成“email@example.com”。

有什么想法吗?

由于 Matthy

5 个答案:

答案 0 :(得分:15)

您可以使用imap_rfc822_parse_adrlist来解析该地址:

$addresses = imap_rfc822_parse_adrlist('My name <email@gmail.com>');

答案 1 :(得分:5)

以面值,以下将起作用:

preg_match('~<([^>]+)>~',$string,$match);

但我怀疑你需要比这更好的东西。有大量的“官方”电子邮件正则表达式模式,你应该更具体地说明匹配的上下文和规则。

答案 2 :(得分:1)

如果你知道该字符串被<>包围,你可以根据它分开。

这假设您在字符串周围始终只有一对<>,并且不会确保结果是电子邮件模式。

否则,您可以随时阅读email regex patterns

答案 3 :(得分:-1)

或查找正则表达式(preg_match)。

类似于:[^&lt;] &lt;([^&gt;] )&gt ;;

答案 4 :(得分:-1)

$s = 'My name <email@gmail.com>';
$s = substr(($s = substr($s, (strrpos($s, '<')+1))), 0, strrpos($s, '>'));

这基本上做的是提取最后一个&之间的所有内容。和最后一个&gt;