簡體   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