回答
我建議你使用FILTER_VALIDATE_EMAIL
過濾器:
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
//valid
}
您還可以使用its regular expression直接:
"/^(?!(?:(?:\\x22?\\x5C[\\x00-\\x7E]\\x22?)|(?:\\x22?[^\\x5C\\x22]\\x22?)){255,})(?!(?:(?:\\x22?\\x5C[\\x00-\\x7E]\\x22?)|(?:\\x22?[^\\x5C\\x22]\\x22?)){65,}@)(?:(?:[\\x21\\x23-\\x27\\x2A\\x2B\\x2D\\x2F-\\x39\\x3D\\x3F\\x5E-\\x7E]+)|(?:\\x22(?:[\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x21\\x23-\\x5B\\x5D-\\x7F]|(?:\\x5C[\\x00-\\x7F]))*\\x22))(?:\\.(?:(?:[\\x21\\x23-\\x27\\x2A\\x2B\\x2D\\x2F-\\x39\\x3D\\x3F\\x5E-\\x7E]+)|(?:\\x22(?:[\\x01-\\x08\\x0B\\x0C\\x0E-\\x1F\\x21\\x23-\\x5B\\x5D-\\x7F]|(?:\\x5C[\\x00-\\x7F]))*\\x22)))*@(?:(?:(?!.*[^.]{64,})(?:(?:(?:xn--)?[a-z0-9]+(?:-[a-z0-9]+)*\\.){1,126}){1,}(?:(?:[a-z][a-z0-9]*)|(?:(?:xn--)[a-z0-9]+))(?:-[a-z0-9]+)*)|(?:\\[(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){7})|(?:(?!(?:.*[a-f0-9][:\\]]){7,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?)))|(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){5}:)|(?:(?!(?:.*[a-f0-9]:){5,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3}:)?)))?(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))(?:\\.(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))){3}))\\]))$/iD"
但在這種情況下,如果一個bug在正則表達式中,你」將不得不更新你的程序,而不是隻更新PHP。
除非您想使用very very long regular expressions,否則您將遇到未覆蓋的有效電子郵件地址(請考慮Unicode)。僞造的電子郵件地址也會通過有效的驗證,那麼,如果您只需編寫[email protected]並放棄驗證,那麼驗證的重點是什麼?
驗證電子郵件地址的最佳方法是發送帶有鏈接的確認電子郵件以進行單擊。這隻有在電子郵件地址有效時纔有效:簡單,並且不需要使用正則表達式。
就像我說的那樣,它不像最大的安全 – 2010-09-01 00:34:07
合理的開發人員會在嘗試發送電子郵件到「字符串」之前一直檢查給定的地址是否有效。所以這不是一個爭論。但無論如何都應該選擇Doupble - 這不是問題。 – 2010-09-01 08:43:34
@Jan:那麼,如果我的電子郵件是àèìòù@mydomain.com,您的搶先檢查會阻止我註冊到您的網站?只需發送一封確認電子郵件,即可設置,無需檢查有效性,並冒着阻止有效的電子郵件地址的風險。 – nico 2010-09-01 13:14:20
function check_email($check) {
$expression = "/^[a-zA-Z0-9._-][email protected][a-zA-Z0-9._-]+\.([a-zA-Z]{2,4})$/";
if (preg_match($expression, $check)) {
return true;
} else {
return false;
}
}
調用它,如果()條件如下面的例子:
if(!check_email($_REQUEST['ContactEmail'])){
$register_error ="Enter the correct email address!<br />";
$reg_error=1;
}
任何人都可以告訴我什麼是這個代碼bcz一個人下來投票的問題。它工作正常。 – 2015-05-29 07:30:21
這不是我投下的票,但....這不正確的過濾電子郵件地址,正確和完整的正則表達式可以在這裏找到:http://www.ex-parrot.com/~ pdw/Mail-RFC822-Address.html 其次,使用內置在FILTER_VALIDATE_EMAIL中的PHP將是過濾電子郵件地址的正確/最佳方法 – twigg 2016-06-30 13:48:34
- 1. 電子郵件驗證PHP
- 2. PHP - 電子郵件驗證
- 3. 電子郵件驗證php
- 4. PHP電子郵件驗證IBM電子郵件(全球範圍)
- 5. 通過電子郵件和PHP進行電子郵件驗證?
- 6. 驗證電子郵件在PHP
- 7. PHP電子郵件表單驗證
- 8. 使用filter_var驗證電子郵件PHP
- 9. 使用PHP驗證電子郵件
- 10. 在php中的電子郵件驗證?
- 11. 在PHP中驗證電子郵件?
- 12. AJAX實時電子郵件驗證(PHP)
- 13. PHP電子郵件驗證功能
- 14. 使用PHP的電子郵件驗證
- 15. 在PHP 5.2中驗證電子郵件?
- 16. PHP erigi:貶值(電子郵件驗證)
- 17. 電子郵件驗證javascript
- 18. 梨電子郵件驗證
- 19. 電子郵件驗證
- 20. ResearchKit:驗證電子郵件
- 21. 電子郵件ID驗證
- 22. Firebase電子郵件驗證
- 23. Jquery - 驗證電子郵件
- 24. NSRegularExpression驗證電子郵件
- 25. 電子郵件驗證
- 26. JavaScript電子郵件驗證 - @
- 27. 電子郵件郵件字段驗證
- 28. Php電子郵件表單驗證,驗證不起作用
- 29. 自定義電子郵件驗證 - 無法設置電子郵件驗證
- 30. 用電子郵件內容中的按鈕進行電子郵件驗證php
請記住,電子郵件也可以包含這些字符:''/ *'。所以這個驗證不會使數據庫安全。 – 2010-08-31 22:35:27
filter_var()對我來說是新的。 FILTER_VALIDATE_EMAIL好嗎? – Marwelln 2010-08-31 22:36:41
+1源代碼參考。很棒 – 2012-10-29 17:00:35