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

使用PHP从字符串中拆分电子邮件,php,Php,我需要能够从信息中拆分包含电子邮件的字符串。我需要从字符串中提取$NAME和$EMAIL或任何可用的内容 字符串可以采用以下格式: "Santa Clause" <santa@example.com> Santa Clause <santa@example.com> <santa@example.com> “圣诞老人条款” 圣诞老人条款 如果分隔符总是相同的字符(例如分号): 否则,请在preg_XXX函数中浏览基于正则表达式的字符串拆分。如果分隔符总是

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

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

"Santa Clause" <santa@example.com>

Santa Clause <santa@example.com>

<santa@example.com>
“圣诞老人条款”
圣诞老人条款

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


否则,请在
preg_XXX
函数中浏览基于正则表达式的字符串拆分。

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


否则,请在
preg_XXX
函数中浏览基于正则表达式的字符串拆分。

有关邮件地址,请参阅。这是一个将字符串与正则表达式匹配的函数。”这是一篇关于如何在PHP中使用正则表达式的简短介绍


如果您还想匹配名称,这将需要一些努力,因此我建议您首先开发一个正则表达式,可以从字符串中提取电子邮件地址,然后对其进行扩充以查找名称。

有关邮件地址,请参阅。这是一个将字符串与正则表达式匹配的函数。”这是一篇关于如何在PHP中使用正则表达式的简短介绍

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

preg_match('#(?:"(?<name>[^"]+)"|(?<name>.+))?<(?<email>[^>]+)>#U', $string, $matches);
echo var_dump($matches);
如果您还想匹配名称,这将需要一些努力,因此我建议您首先开发一个正则表达式,可以从字符串中提取电子邮件地址,然后对其进行扩充以找到名称。

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

preg_match('#(?:"(?<name>[^"]+)"|(?<name>.+))?<(?<email>[^>]+)>#U', $string, $matches);
echo var_dump($matches);
echo var_dump($matches); preg#U match('#(?:“(?[^”]+)“|(?。+)?]+)>#U',$string,$matches); echo var_dump($matches);
试试上面的一个。前者允许发送更多有效的电子邮件,而后者则更快。

preg#U match(“#”(?:“(?[^”]+)”)“|”(?。+)?#U',$string,$matches);
$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
echo var_dump($matches); preg#U match('#(?:“(?[^”]+)“|(?。+)?]+)>#U',$string,$matches); echo var_dump($matches);
试试上面的一个。前者允许发送更多的有效电子邮件,而后者则更快。

$string\u to\u check='圣诞老人条款'
$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
$matches=array(); preg_match('/?([^
$string_to_check='圣诞老人条款''
$matches=array();

preg_match('/?([^发现了这一点,效果非常好

$parts = preg_split('/[\'"<>]( *[\'"<>])*/', $text, -1, PREG_SPLIT_NO_EMPTY); 
$parts=preg\u split('/[\''”](*[\''])*/',$text,-1,preg\u split\u NO\u EMPTY);

找到了这个,它工作得很好

$parts = preg_split('/[\'"<>]( *[\'"<>])*/', $text, -1, PREG_SPLIT_NO_EMPTY); 
$parts=preg\u split('/[\''”](*[\''])*/',$text,-1,preg\u split\u NO\u EMPTY);

请添加更多关于字符串的外观(完整)和所需结果的信息。对于这些有限的信息,我唯一能给出的提示是使用带有preg_match函数的正则表达式。很抱歉,当我最初发布时,我没有意识到我的示例已“清理”通过网站。我现在可以得到它。请添加更多关于字符串的外观(完整)以及您需要的结果的信息。我能提供的唯一提示是使用带有preg_match函数的正则表达式。对不起,当我最初发布时,我没有意识到我的示例是“清理”的通过网站。我现在可以得到它。preg_match函数中的$string_to_check在这里是$string_to_match。另外,preg_math=>preg_match。preg_match函数中的$string_to_check在这里是$string_to_match。另外,preg_math=>preg_match。