2011-05-16 53 views
1
$string ='"Test User" <[email protected]>,"Another" <[email protected]>,"aeer" <[email protected]>'; 

我已經成功分割這成爲對姓名和電子郵件地址的使用此代碼與有效的電子郵件全名

preg_match_all('!"(.*?)"\s+<\s*(.*?)\s*>!', $string, $matches); 

的問題是,我無法驗證的電子郵件地址,假的電子郵件地址也會匹配。 如何過濾只有有效的電子郵件,並拆分名稱和電子郵件地址?

+0

電子郵件驗證已經在[stackoverflow.com(http://stackoverflow.com/search?q=regex+email+validation) – stema 2011-05-16 09:03:55

回答

5

你可以使用一些可用的郵件地址解析器可供選擇,如:

任選地,通過filter_var()(或針對陣列一個of its permutations)與過濾輸出。

+1

好像'FILTER_VALIDATE_EMAIL' [沒有按討論了幾次't accept](http://sandbox.onlinephpfunctions.com/code/9afdc80d8ef16d2e7892d813953e0b11ed3f8f81)地址,如'Test User <[email protected]>'。有沒有辦法得到正確的驗證呢? – Mouagip 2015-05-14 09:23:45

1

電子郵件地址驗證可以通過兩種方式完成:檢查@和a。並假定它是有效的。用戶知道他們的電子郵件地址,如果他們輸入了錯誤的地址,這不是我們的業務。如果你想成爲某些你犯了一個良好的e-mail地址檢查,那麼就只有一個正確的正則表達式要用於驗證:http://www.ex-parrot.com/pdw/Mail-RFC822-Address.html