繁体   English   中英

PHP电子邮件数组正则表达式

[英]PHP Email Array Regular Expression

给定电子邮件列表,格式为:

  "FirstName Last" <email@address.com>, "NewFirst NewLast" <email2@address.com>

如何将其构建为仅电子邮件地址的字符串数组(我不需要名称)。

PHP的Mailparse扩展具有您可能想尝试的mailparse_rfc822_parse_addresses函数 否则,您应该构建自己的地址解析器。

您可以使用preg_match_alldocs ):

preg_match_all('/<([^>]+)>/', $s, $matches);
print_r($matches); // inspect the resulting array

假设所有地址都包含在< ... > ,则无需explode()字符串$s


编辑根据评论,正则表达式可以重写为'/<([^@]+@[^>]+)>/' 不知道这是否是故障安全的:)


编辑#2将解析器用于任何非平凡的数据(请参阅下面的注释-电子邮件地址解析是一个bit子)。 但是,可以通过删除重复的地址来防止某些错误。

<?php

 $s = "\"FirstName Last\" <email@address.com>, \"NewFirst NewLast\" <email2@address.com>";

 $emails = array();
 foreach (split(",", $s) as $full)
 {
  preg_match("/.*<([^>]+)/", $full, $email);
  $emails[] = $email[1];
 }

 print_r($emails);
?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM