所以我有这个基本脚本:
/*check if email is valid*/
if (substr_compare ( $email , '@' , 0 )>0)
{
/*put user to temporary database*/
echo 'registration script';
}else{echo 'wrong mail';};
我想做的是检查字符串是否包含符号"@"(如果邮件有效)。但它不起作用:当我将变量$email设置为类似"name"=函数返回"1"时,尽管我认为它应该返回0或-1,因为字母不在那里。我错过了什么?
要检查sctring是否包含另一个子字符串,需要使用strpos
(而不是substr_compare
等比较函数):
if (strpos($email, '@') !== null) { ... }
是的,你检查电子邮件地址的方式很弱。使用正则表达式或内置的PHP过滤器,如
if (filter_var($email, FILTER_VALIDATE_EMAIL)) { ... }
您可以使用filter_var来验证电子邮件,这种方式更加健壮。
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo "This (email) email address is considered valid.";
} else {
echo "wrong email";
}
要检查字符串是否在输入的电子邮件地址中包含"@",您可以使用strpos函数轻松检查:
if (strpos($_POST['email'], '@') !== false) {
echo 'The email address has @ in it.';
}
从技术上讲,strpos()函数如果找到指定子字符串的第一个字符,则返回该字符的索引位置。如果在字符串中定位子字符串失败,则返回布尔值false。由于子字符串可能从父字符串的最开头开始,因此strpos()返回0,这在PHP中被解释为false,这是一个绝对的比较!==是必需的。