[英]PHP Email Array Regular Expression
給定電子郵件列表,格式為:
"FirstName Last" <email@address.com>, "NewFirst NewLast" <email2@address.com>
如何將其構建為僅電子郵件地址的字符串數組(我不需要名稱)。
PHP的Mailparse擴展具有您可能想嘗試的mailparse_rfc822_parse_addresses
函數 。 否則,您應該構建自己的地址解析器。
您可以使用preg_match_all
( docs ):
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.