我创建了一个函数来验证电子邮件地址,以便检查它们是否匹配。
但它似乎不起作用,因为当我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
。另一方面,
如果我删除静态,我会00
。
所以我认为这个$count
正在发挥作用,但我仍然感到困惑,为什么我上面得到NULL
结果。
答案 0 :(得分:1)
你设置$ count = 0,然后设置$ value1 = $ value,但是从不将$ value2设置为任何东西因为$ count不等于1,所以$ value2为null,这就是var_dump给你null的原因。然后使用$ count ++将计数增加到1,但下次运行时,count将重新设置为0.
答案 1 :(得分:1)
为什么花时间验证电子邮件,而PHP有功能为您做到这一点? 例如:
if(filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)){
echo "valid";
}else{
echo "not Valid";
}
在这里你可以找到更多。
<强> PHP Filters 强>