2016-12-28 4 views
-1

Я изучаю PHP из учебника PHP по w3schools.Почему FILTER_SANITIZE_EMAIL не удаляет недопустимые символы с недопустимого адреса электронной почты?

В главе о PHP Фильтры я наткнулся на следующую программу:

<!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() используется для первого удалить все недопустимые символы из переменной $ электронной почты, а затем проверить, если это действительный адрес электронной почты.

Затем я попытался установить значение переменной $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