2012-11-08 56 views
0

所以我要回了一個項目,並整理了一些驗證位的,通常我會用一個正則表達式檢查,以驗證電子郵件是正確的,後來我看到了:http://de2.php.net/manual/en/function.filter-var.php驗證電子郵件不會忽略

現在我已經嘗試了幾次測試,但沒有得到我期望的結果。

$email_b = 'bog^[email protected]'; 
var_dump(filter_var($email_b, FILTER_SANITIZE_EMAIL)); 

返回:

string(16) "bog^[email protected]" 

但對我來說,這不是消毒,然後當我嘗試

if (filter_var($email_b, FILTER_VALIDATE_EMAIL)) { 
    echo "This (email_b) email address is considered valid."; 
} 

再次我想說的是不是一個有效的電子郵件地址。

我在這裏錯過了什麼嗎?

+1

不是給你,而是根據RFC這些字符是有效的。 – mario

+0

您試圖在哪個版本的PHP上使用? – j0k

+3

「^」是電子郵件地址的有效字符(請參閱http://en.wikipedia.org/wiki/Email_address#Valid_email_addresses或相應的RFC) –

回答

3

是的,你錯過了一些東西。 bog^[email protected]是一個有效的電子郵件地址,所以您的測試返回正確的結果。請參閱這篇文章以快速瞭解哪些字符在電子郵件地址中有效。

http://en.wikipedia.org/wiki/Email_address

在電子郵件地址(@前的位)下列字符是合法的本地部分: -

  • 大寫和小寫英文字母(A-Z,A-Z )(ASCII:65-90,97-122)
  • 數字0到9(ASCII:48-57)
  • 字符#$%&「* + -/=^_`{|}〜(!? ASCII:33,35-39,42,43,45,47,61,63,94-96,123-126)

加上一些其他的限制在鏈接文章中。

該文章提供了無效地址的示例供您在測試中使用。如: -

  • Abc.example.com(@字符必須分開本地和域部分)
  • 美國廣播公司@ example.com(字符點陣()是最後的本地部分。)
  • Abc..123 @ example.com(字符點(。)是雙精度)