2012-11-30 30 views
0

可能重複:
filter_var in php 5.3.8替代filter_var

我最近升級到PHP 5.3.8,我有驗證用戶輸入一個電子郵件地址,使用「登記表問題filter_var」。 我希望確保在輸入有效的電子郵件地址時將其發佈到數據庫中,如果由於某種原因電子郵件地址的格式不正確,請通知用戶輸入有效的電子郵件地址。 所以我查了php.net,事實證明filter_var不存在於php 5.3.8 有誰知道在php中替代filter_var 5.3.8

+2

我看不到在PHP 5.3.8中存在'filter_var'。你能提供一個鏈接到你閱讀的地方嗎?官方文檔稱它可用於PHP> = 5.2.0 – Brad

+0

您將得到一個致命錯誤,而不是「無效」電子郵件地址。你可能誤解了允許的語法。這個地址是怎麼看的? - 如果真的需要編譯過濾器分機,可以使用[upgradephp](http://include-once.org/p/upgradephp/)提供有限的用戶區實現。 – mario

回答

0

如果你只關心提供的電子郵件地址是語法上有效,例如RFC 2822兼容的,那麼此正則表達式將爲:

(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\]) 
+0

我還沒有證實這一點,我只是在這裏扮演魔鬼的擁護者,但我非常懷疑這個正則表達式是100%RFC兼容的檢查電子郵件語法。如果是這樣的話,FILTER_VALIDATE_EMAIL可能已經在使用它了,並且在互聯網上不會有五千萬個不同的正則表達式試圖做同樣的事情來獲得不同程度的成功(['Mail :: RFC822'](http: //www.ex-parrot.com/pdw/Mail-RFC822-Address.html)使用更長的一個例如)。 – FtDRbwLXw6

+0

該網站的鏈接是http://www.php.net/manual-lookup.php?pattern=filter_var++%28PHP+5+%3E%3D+5.3.8&scope=quickref –

0

filter_var

(PHP 5> = 5.2.0)

filter_var - 過濾與指定的過濾器的可變

文檔說它在5.3.8中存在就好,所以你應該可以使用它...