使用PHP从字符串中拆分电子邮件

时间:2010-08-29 13:03:17

标签: php

我需要能够拆分包含电子邮件From信息的字符串。我需要从字符串中提取$NAME$EMAIL或任何可用的内容。

字符串可以采用以下格式:

"Santa Clause" <santa@example.com>

Santa Clause <santa@example.com>

<santa@example.com>

5 个答案:

答案 0 :(得分:2)

preg_match('#(?:"(?<name>[^"]+)"|(?<name>.+))?<(?<email>.+)>#U', $string, $matches);
echo var_dump($matches);

preg_match('#(?:"(?<name>[^"]+)"|(?<name>.+))?<(?<email>[^>]+)>#U', $string, $matches);
echo var_dump($matches);

尝试上述之一。前者将允许更有效的电子邮件,而后者更快。

答案 1 :(得分:1)

$string_to_check = '"Santa Clause" <santa@npole.com>'
$matches = array();
preg_match('/?([^<"]*)"?\s*<(\S*)>/',$string_to_check,$matches);
$matches[1] //=> Santa Claus
$matches[2] //=> santa@npole.com

答案 2 :(得分:0)

如果分隔符始终是相同的字符(例如分号):

$items = explode($separator, $from);

否则,浏览preg_XXX函数以进行基于正则表达式的字符串拆分。

答案 3 :(得分:0)

对于邮件地址,请查看http://php.net/manual/en/function.preg-match.php。这是一个将字符串与正则表达式匹配的函数。 Here是关于如何在PHP中使用正则表达式的简短介绍。

如果你也想要匹配这个名字,那将是一些努力,所以我建议你先开发一个正则表达式,它可以从你的字符串中提取一个电子邮件地址,然后对它进行扩充以找到这个名字。

答案 4 :(得分:0)

找到了这个并且效果很好!

$parts = preg_split('/[\'"<>]( *[\'"<>])*/', $text, -1, PREG_SPLIT_NO_EMPTY);