我编写了一个函数来验证电子邮件地址,以验证并检查它们是否匹配。
但它似乎不起作用,因为当我var_dump()
。
我得到的null
值如:NULL string(13) 123@gmail.com
。你能给我一些建议来解决这个问题吗?我完全卡住了。
function email_validate_n_match($value)
{
if( $value == '') return;
if( preg_match("/^([a-zA-Z0-9])+([a-zA-Z0-9'._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9'._-]+)+$/", $value) ) {
static $count = 0;
if($count == 0) {
$value1 = $value;
} else if($count == 1) {
$value2 = $value;
}
var_dump($value2);
// if ($value1 == $value2) {
// return;
// }else{
// $this->clear = false;
// return $this->tag_st . 'Doesn't match.' . $this->tag_ed;
// }
$count++;
return;
} else {
$this->clear = false;
return $this->tag_st . 'Put the correct email address.' . $this->tag_ed;
}
}
编辑:谢谢你的回答。
当我把这个
static $count = 0;
if($count == 0) {
$value1 = $value;
echo '0';
} else if($count == 1) {
$value2 = $value;
echo '1';
}
输出01
。另一方面,
如果我删除static,我得到00
。
所以我认为这个$count
是工作的,但我仍然很困惑为什么我得到了NULL
的结果。
您设置$count = 0,然后设置$value1 = $value,但从不设置$value2为任何值,因为$count不等于1,因此$value2为null,这就是为什么var_dump给您null。然后使用$count++将count增加为1,但下次运行时,count将被设置回0。
为什么要花时间来验证电子邮件,而PHP有一个函数来为您做这件事?例如:
if(filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)){
echo "valid";
}else{
echo "not Valid";
}
在这里你可以找到更多。
PHP过滤器