2014-03-12 35 views
0

我測試的電子郵件字段的形式驗證,並輸入很長的電子郵件:PHP FILTER_VALIDATE_EMAIL在不同的機器返回不同的值

$email = 'dfgjfdjglkdfjglkjdfgldfjglkdfjgkldfjlkgjdlkfjglkdfjkgdklfjgldkfjgldlfjgk[email protected]mail.com'; 

在本地機器功能filter_var返回的字符串與電子郵件:

$email = 'dfgjfdjglkdfjglkjdfgldfjglkdfjgkldfjlkgjdlkfjglkdfjkgdklfjgldkfjgldlfjgk[email protected]mail.com'; 

die(var_dump(filter_var($email, FILTER_VALIDATE_EMAIL))); 

但在遠程服務器此代碼返回FALSE。

本地機器上的PHP版本 - 5.3.2-1ubuntu4.22

在遠程計算機上 - 28年3月5日

已filter_var功能被這個版本的PHP之間改變了嗎?爲什麼我使用相同的代碼接收不同的值?

+0

確認:http://3v4l.org/6gMAb –

回答

1

FILTER_VALIDATE_EMAIL自5.3.2以來已經更新了幾次(你真的應該更新你的版本順便說一句)。當輸入/驗證地址過長時,最顯着的更新是this bug-fix導致seg-fault。
沿此修復程序(它被記錄兩次),Rasmus LerdofFILTER_VALIDATE_EMAIL返回誤報。雖然,AFAIKT,這不可能是你的困境的原因。
其他一些更改包括涉及特殊字符如?,>1=的錯誤。
不管怎樣,看到因爲PHP5.3.2所有的變化,只是檢查他們的網站上the changelog ...

還是那句話:更新您的本地版本,它變得相當過時。假設你正在運行Ubuntu:在兩個發行版的

$ sudo apt-get install php5-dev --install-recommends --install suggests 

,最好運行sudo apt-get update第一,當然...

+0

感謝您的詳細解答。 – Tamara

0

PHP's changelog

$ sudo apt-get install php5-dev 
//optionally 
$ sudo apt-get install php5-dev --install-suggests 

如果你正在運行的薄荷您可以在您提到的版本之間看到至少兩個問題(搜索FILTER_VALIDATE_EMAIL)。這可能是進行更多搜索的起點。

那麼更新你的本地PHP版本呢?你使用的是一個很老的...

+0

感謝您的回答。我認爲更新PHP是一個好主意:) – Tamara