如何在没有正则表达式的情况下使用php验证电话号码?

时间:2014-10-21 12:37:19

标签: php validation

我想在用户网站注册时验证用户的电话号码。我使用此代码执行此操作:

        $mobile = mysql_real_escape_string($_POST['mobile']);
        //check mobile validity
        $options = array('options' => array('min_range' => 0));
        if(filter_var($mobile, FILTER_VALIDATE_INT, $options) == FALSE)
        {
            $_SESSION['warnings']['warning_mobile'] = ENTER_VALID_MOBILE;   
        }
        else
        {
            $_SESSION['warnings']['warning_mobile'] = '';
            $_SESSION['temp_post']['mobile'] = $mobile;
        }

正如你可以看到代码检查这个数字是否包含有效的int数字,如果一切正常,如果没有,它会给我错误信息。

我的问题是:此代码不接受以零开头的数字(例如0 555 555 5555,这是无效数字)。

有没有办法让这段代码接受从零开始的数字?

1 个答案:

答案 0 :(得分:0)

留下一个事实,即使用正则表达式可以轻松解决这个问题,需要考虑以下几点:

  • $mobile是一个字符串:filter_var($mobile, FILTER_VALIDATE_INT) 将永远返回虚假。
  • 您是否只想考虑数字,或者您需要支持包含空格,连字符和加号等字符的数字?例如" +1 23-4555-555"

如果您需要支持"普通数字"只是,看看is_numeric。它检查变量是数字还是仅由数字构成的字符串。

关于您的问题:

  

有没有办法让这段代码接受这个数字开头   零??

您的代码无效,因为$mobile不是整数,而不是因为您的数字以0开头。

最后的建议仍然是使用正则表达式,这是解决此类问题的最佳方法。