2012-06-27 69 views
0

採取這四種格式from參數在電子郵件的標題:PHP正則表達式中的電子郵件 「從」 參數

From: Jon Doe <[email protected]>

From: "Jon Doe" <[email protected]>

From: <[email protected]>

From: [email protected]

有任何人都可以使用正則表達式來匹配電子郵件地址在preg_match中使用這些?我已經嘗試了一些,但<>正在追趕出來

+0

你要買只匹配的電子郵件或每一個整個事情? – bretterer

+0

只是電子郵件,沒有'<' or '>' – beingalex

回答

1

你正在尋找的正則表達式是

^From:.*?<?(\[email protected]\S+?)>?\s*$ 
This will match the whole thing in any of the 4 cases 

如果你正在尋找匹配不僅僅是電子郵件它被一再詢問...只是搜索regex email

電子郵件驗證,其中將包括任何電子郵件與+號或。在電子郵件以及基本會是什麼樣

\b[!#\$%&'\*\+\-/=\?\^_`{\|}~a-zA-Z0-9][!#\$%&'\*\+\-/=\?\^_`{\|}~a-zA-Z0-9\.]*[!#\$%&'\*\+\-/=\?\^_`{\|}~a-zA-Z0-9]@[a-zA-Z0-9\-][a-zA-Z0-9\-\.]+[a-zA-Z0-9\-]\b 
This is what I use. 
0

嘗試正則表達式([^<>\s]+)>?$

2
var_dump(imap_rfc822_parse_adrlist($string)); 

甚至:

$headers = imap_rfc822_parse_headers("From: Jon Doe <[email protected]>"); 
$from_email = $headers->from[0]->mailbox.'@'.$headers->from[0]->host; 
+0

我應該說我正在使用Zend_Mail_Storage_Imap – beingalex

+1

那麼?什麼改變了?該函數獨立工作得非常好,可能會捕獲更多的邊緣情況,然後任何小於25kbyte的正則表達式。 – Wrikken