2010-02-22 27 views
0

如何使用正則表達式獲取字符串內部的電子郵件?簡單正則表達式幫助

我的字符串如下

"First Last <[email protected]>" 

我要搶「[email protected]」,並存儲在某個地方。

在此先感謝!

+0

退房:http://www.phpfreaks.com/forums/index.php?topic=235338.0 – Burton 2010-02-22 17:18:15

+0

您可能還需要在這裏查看: > [「如何查找或驗證電子郵件地址」](http://www.regular-expressions.info/email.html)on regular-expressions.info – npinti 2010-02-22 17:21:26

+0

您應該考慮使用['mailparse_rfc822_parse_addresses'](http:/如果可能的話,/php.net/mailparse_rfc822_parse_addresses)。 – Gumbo 2010-02-22 18:07:19

回答

3

沒有正則表達式(可能更快):

$string = "First Last <[email protected]>"; 
echo substr($string, strpos($string, '<') +1, -1); 

echo trim(strstr("First Last <[email protected]>", '<'), '<>'); 

都將給予

[email protected] 

如果您需要驗證的最終結果,使用

filter_var($eMailString, FILTER_VALIDATE_EMAIL); 
+0

儘管您必須爲不匹配的輸入添加額外的檢查。這裏的正則表達式略有優勢。 – Tomalak 2010-02-22 17:39:28

+0

@Tomalak如果沒有<>,那麼正則表達式(ex @ shad的代碼)也不會返回任何東西。至少在我的第二個例子中。 – Gordon 2010-02-22 17:44:03

+0

不完全是這樣,因爲如果刺痛不良,「bla < bla」一個精心製作的正則表達式仍然可以正常工作(即:不匹配),而substr()或strstr()會自動失敗。 – Tomalak 2010-02-22 17:48:34