回答
自定義驗證讓你在你想要走多遠,這個更多的控制。作爲一個電子郵件地址,什麼是和不是有效的,比你想象的要複雜得多,而且大多數情況下,最好過於寬鬆,而不是太嚴格。畢竟,一個語法上有效的電子郵件地址並不能保證該帳戶實際存在,更不用說它正在被積極使用。類似的,它必須包含一個@,@之後至少一個點,@之前至少一個字符,以及任何非法字符都可能在大多數情況下足夠好。
PHP不按官方的RFC無法驗證電子郵件地址(我現在找不到這個權利作爲參考,但它最近來到了這裏)。即使「FILTER_VALIDATE_EMAIL」在大多數情況下可能都足夠好,但我建議您不要這樣做,並且可以使用符合RFC的檢查程序,或者如您所說,輕鬆一點。 – deceze 2010-07-30 09:41:41
哦,在這裏我們去:http://svn.php.net/repository/php/php-src/branches/PHP_5_3/ext/filter/logical_filters.c尋找在'php_filter_validate_email'正則表達式。它太短而無法完全符合RFC。 :) – deceze 2010-07-30 09:47:42
我的觀點正好。符合RFC並不意味着它的存在和工作。另外,如果聽說所有的郵件代理都符合RFC,我會感到驚訝。 – tdammers 2010-07-30 10:01:23
過濾器變種的電子郵件刪除所有字符,除了字母,數字和!#$%&'*+-/=?^_`{|}[email protected][]
。現在取決於您是否想要使用此過濾或創建定製解決方案。
這裏是對一個優秀的文章:
Input Validation: Using filter_var() Over Regular Expressions
* santizing *過濾器,但不是* validating *過濾器。如果沒有進行消毒處理,「有效」電子郵件(根據過濾器)仍然可以包含上述以外的其他字符。 – salathe 2010-07-30 11:09:45
PHP的filter_var對於大多數應用程序來說可能是令人滿意的,但如果您想比較性能和有效性,請查看此站點http://www.linuxjournal.com/article/9585以瞭解RFC 2822遵從性的含義。
我發現這個谷歌搜索時, 希望這解釋了你更好
歡迎您使用我的免費PHP函數is_email()
驗證地址。它可用here。
這將確保一個地址是完全RFC 5321標準。它可以選擇性地檢查域是否確實存在。
你不應該依賴驗證告訴你用戶的電子郵件地址是否真實存在:一些ISP給了不符合規定的地址給他們的用戶,尤其是在不使用拉丁字母的國家。更多在我的文章關於電子郵件驗證在這裏:http://isemail.info/about。
- 1. 調用未定義的函數filter_var()
- 2. PHP或PHPUnit自定義函數
- 3. PHP的filter_var()函數生成警告
- 4. Aurelia:訪問自定義元素的自定義函數或自定義屬性
- 5. 在python中定義自定義函數
- 6. PHP自定義超全局函數
- 7. 添加自定義PHP函數XSL
- 8. OpenCart PHP自定義函數不工作
- 9. 自定義PHP函數HTTP錯誤500
- 10. 自定義PHP「爆炸」函數遞歸
- 11. PHP的filter_var FILTER_FLAG_ENCODE_HIGH
- 12. PHP - Filter_var替代?
- 13. PHP filter_var bug?
- 14. filter_var php問題
- 15. 自定義函數
- 16. PHP何時使用filter_var而不是內置的php函數
- 17. 如何使用filter_var()函數來驗證電子郵件在PHP。
- 18. 在使用HHVM時,是否有替代php中的「filter_var」函數?
- 19. dalek回調函數或自定義函數
- 20. 使用自定義綁定,擴展器或自定義函數擴展敲擊
- 21. PHP filter_var URL錯誤
- 22. PHP的filter_var功能
- 23. PHP filter_var()函數允許整數超過一個減
- 24. PHP函數 - 自定義字符串長度函數
- 25. 是否可以添加到filter_var()函數用戶定義的參數?
- 26. 子或函數未定義
- 27. 自定義在PHP
- 28. 定義自定義GNU make函數
- 29. jQuery定義自定義函數
- 30. 定義和調用自定義函數
這取決於您的自定義功能;) – 2010-07-30 09:28:54
我用這一個:http://code.iamcal.com/php/rfc822/rfc822.phps的時刻。 – Alex 2010-07-30 09:54:54