我正在和filter_var
一起来验证电子邮件:
$email = "test@test.com";
if( filter_var( $email, FILTER_VALIDATE_EMAIL ) ){
echo "{Valid Email";
}else{
echo "Invalid Email";
}
返回Valid Email
。
但是当我在本地尝试使用. $ # * ? & ! ^ ~ / ' - _ @ % {} | = +
之类的特殊字符时,例如:
$email = "te?st@test.com";
$email = "te/st@test.com";
$email = "te'st@test.com";
$email = "te}st@test.com";
$email = "te|st@test.com";
$email = "te=st@test.com";
那也将返回Valid Email
。
它不接受像<> [] ,
这样的字符。
但是如果我使用$
:
$email = "te$st@test.com";
这将返回Valid Email
,但也会返回NOTICE Undefined variable: st
在将电子邮件地址插入数据库之前,我应该使用它来验证电子邮件地址吗?
还是我应该使用自定义的正则表达式?
答案 0 :(得分:5)
使用双引号引起来的字符串时,$
字符被视为变量名的开头。因此$st
看起来像一个变量,PHP尝试对其进行插值。通过使用不对字符串变量进行内插的单引号可以轻松解决此问题。
$email = 'te$st@test.com';
请参阅PHP documentation for strings,以了解有关此内容的更多信息,因为它是PHP开发的重要组成部分。