我需要根據域名過濾一些電子郵件地址: 基本上,如果域名是yahoo-inc.com,facebook.com,baboo.com ..(和a其他幾個)函數應該做些什麼,如果域不同,它應該做別的。 我知道這樣做的唯一方法是使用帶preg_match_all的模式/正則表達式,併爲每個balcklisted域(例如,如果domain = yahoo-inc)創建案例/條件,請執行此elseif(domain == facebook.com)。 ..等,但我需要知道是否有一個更簡單/ concis的方式,包括我想過濾在一個單一的變量/數組的所有域,然後只應用2個條件(例如,如果電子郵件在黑名單{做一些事情}其他{做別的事情}php驗證基於域名的電子郵件地址
1
A
回答
2
提取域部分(即一切後,最後一個「@」),向下的情況下,然後用in_array
來檢查它是否在黑名單:
$blacklist = array('yahoo-inc.com', 'facebook.com', ...);
if (in_array($domain, $blacklist)) {
// bad domain
} else {
// good domain
}
1
好這是一個非常簡單的方法做到這一點,有效的電子郵件地址應該只包含一個@
符號,只要驗證您可以通過@
爆炸字符串並收集第二個段。
例子:
if (filter_var($user_email, FILTER_VALIDATE_EMAIL))
{
//Valid Email:
$parts = explode("@",$user_email);
/*
* You may want to use in_array if you already have a compiled array
* The switch statement is mainly used to show visually the check.
*/
switch(strtolower($parts[1]))
{
case 'facebook.com':
case 'gmail.com':
case 'googlemail.com':
//Do Something
break;
default:
//Do something else
break;
}
}
+0
這將需要每個列入黑名單的域的情況下,最好將所有列入黑名單的域存儲在一個數組中,然後使用in_array進行比較。 – Ajay 2011-02-27 23:08:59
+0
在代碼中閱讀我的評論。 – RobertPitt 2011-02-27 23:09:39
2
添加到@Alnitak這裏是完整的代碼做什麼,你需要
$domain = explode("@", $emailAddress);
$domain = $domain[(count($domain)-1)];
$blacklist = array('yahoo-inc.com', 'facebook.com', ...);
if (in_array($domain, $blacklist)) {
// bad domain
} else {
// good domain
}
相關問題
- 1. 基於域名的電子郵件地址驗證
- 2. 驗證電子郵件地址(域名)
- 3. 如何使用PHP驗證域名的電子郵件地址?
- 4. 如何驗證電子郵件地址的頂級域名?
- 5. 如何驗證電子郵件地址的域名
- 6. 頂級域名的電子郵件地址驗證
- 7. Jquery驗證電子郵件地址或域名
- 8. 基於域名的電子郵件驗證
- 9. ASP.NET的電子郵件地址驗證
- 10. HTML/PHP - 驗證 - 電子商務網站的基本驗證要求? (姓名和電子郵件地址)
- 11. PHP:電子郵件驗證和接受來自某個域名的電子郵件地址
- 12. OSCLASS:驗證電子郵件地址
- 13. 驗證電子郵件地址
- 14. 電子郵件地址輸入驗證
- 15. ZF2電子郵件地址驗證器
- 16. 電子郵件地址驗證狀態
- 17. 驗證電子郵件地址
- 18. iOS電子郵件地址驗證
- 19. ListView驗證電子郵件地址
- 20. 在Dart驗證電子郵件地址?
- 21. 電子郵件地址驗證
- 22. 如何驗證電子郵件地址
- 23. 電子郵件地址驗證,如何?
- 24. 如何驗證電子郵件地址
- 25. C#電子郵件地址驗證
- 26. 驗證電子郵件地址失敗
- 27. 目標電子郵件地址驗證
- 28. Symfony formbuilder:驗證電子郵件域名?
- 29. 驗證電子郵件域名
- 30. 基於電子郵件地址
非常感謝! in_array是神奇功能 – Michael 2011-02-27 23:12:58