我正在从w3schools PHP教程学习PHP。
在关于 PHP过滤器的章节中,我遇到了以下程序:
<!DOCTYPE html>
<html>
<body>
<?php
$email = "john.doe@example.com";
// 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
的值设置为“john.doe@exampleW#%%%%%。com”,并尝试按以下方式打印该值:
<!DOCTYPE html>
<html>
<body>
<?php
$email = "john.doe@exampleW#%%%%%.com";
// Remove all illegal characters from email
$email = filter_var($email, FILTER_SANITIZE_EMAIL);
echo "Echoed Email : ".$email; die;
?>
</body>
</html>
我得到的上述程序的输出是字符串“john.doe@exampleW#%%%%%。com”,因为我输入了。
我的问题是为什么根据w3schools没有删除给定无效电子邮件中的无效字符?
答案 0 :(得分:0)
因为,在您的示例中,电子邮件有效,
&#34;的 FILTER_SANITIZE_EMAIL 强>&#34;将允许&#34; !#$%&amp;&#39; * + - =?^ _` {|}〜@。[] &#34;
检查exceptions。
答案 1 :(得分:0)
FILTER_SANITIZE_EMAIL不会删除%字符。来自manual:
删除除字母,数字以外的所有字符!#$%&amp;&#39; * + - =?^ _` {|}〜@。[]。
在电子邮件地址中有很多字符实际上是合法的。