2016-12-28 18 views
-1

我正在從w3schools PHP教程學習PHP。爲什麼FILTER_SANITIZE_EMAIL不會從無效的電子郵件地址中刪除無效的字符?

<!DOCTYPE html> 
    <html> 
     <body> 

     <?php 
     $email = "[email protected]"; 

     // Remove all illegal characters from email 
     $email = filter_var($email, FILTER_SANITIZE_EMAIL); 

     // Validate e-mail 
     if (!filter_var($email, FILTER_VALIDATE_EMAIL) === false) { 
      echo("$email is a valid email address"); 
     } else { 
      echo("$email is not a valid email address"); 
     } 
     ?> 

    </body> 
</html> 

W3Schools的是說,filter_var()函數用於首先從$電子郵件變量刪除所有非法字符,然後檢查:

在一章關於PHP過濾器我碰到下面的程序來這是一個有效的電子郵件地址。

然後我試圖可變$email的值設置爲[email protected]#%%%%%.com」和試圖打印的值如下:

<!DOCTYPE html> 
<html> 
    <body> 

    <?php 
    $email = "[email protected]#%%%%%.com"; 

    // Remove all illegal characters from email 
    $email = filter_var($email, FILTER_SANITIZE_EMAIL); 
    echo "Echoed Email : ".$email; die; 
    ?> 

    </body> 
</html> 

的輸出上面的程序我得到的是字符串[email protected]#%%%%%.com」,因爲它是我輸入的。

我的問題是爲什麼根據w3schools從給定的無效電子郵件中的無效字符沒有被刪除?

+0

人們仍然使用w3fools.com? –

回答

0

因爲,在你的例子電子郵件是有效的,

FILTER_SANITIZE_EMAIL」 將允許 「#$%&「* + - =^_`!?{|}〜@ []。」

檢查exceptions

0

FILTER_SANITIZE_EMAIL不會刪除%字符。從manual

刪除所有字符,除了字母,數字和#$%&「* + - =^_`{|}〜@ []!?。

在電子郵件地址中有很多字符實際上是合法的。

+0

我在哪裏可以獲得那些被視爲非法的字符列表,FILTER_SANITIZE_EMAIL將它們刪除? – user2839497

相關問題