我正在使用 PHPfilter_validate_int
执行简单的电话验证。长度应该正好是 10 个字符,并且都应该是数字。但是,由于大多数电话号码都以 0 开头。过滤器验证 int 函数返回 false。有没有办法解决这个问题。这是我使用的代码
if(!filter_var($value, FILTER_VALIDATE_INT) || strlen($value) != 10) return false;
我正在使用 PHPfilter_validate_int
执行简单的电话验证。长度应该正好是 10 个字符,并且都应该是数字。但是,由于大多数电话号码都以 0 开头。过滤器验证 int 函数返回 false。有没有办法解决这个问题。这是我使用的代码
if(!filter_var($value, FILTER_VALIDATE_INT) || strlen($value) != 10) return false;
您无法做任何事情来进行此验证。在任何情况下,您都不应该使用FILTER_VALIDATE_INT
,因为电话号码不是整数;它们是一串数字。
如果您想确保这$tel
是一个正好由 10 位数字组成的字符串,您可以使用正则表达式:
if (preg_match('/^\d{10}$/', $tel)) // it's valid
或(也许更好)一些老式的字符串函数:
if (strlen($tel) == 10 && ctype_digit($tel)) // it's valid
$str = '0123456789';
if(preg_match('/^\d{10}$/', $str))
{
echo "valid";
}
else
{
echo "invalid";
}
您可以使用正则表达式:
if (!preg_match('~^\d{10}$~', $value)) return false;
这是一个 PHP 错误 - #43372
正则表达式很好,但会消耗一些资源。
这适用于任何整数,包括零和前导零
if (filter_var(ltrim($val, '0'), FILTER_VALIDATE_INT) || filter_var($val, FILTER_VALIDATE_INT) === 0) {
echo("Variable is an integer");
} else {
echo("Variable is not an integer");
}
0 不是 int 的有效起始编号。0 是八进制数的起始数。
电话号码是一个字符串,而不是一个整数。您必须使用正则表达式来验证它。
可能您需要检查返回是 false 还是 0。过滤器在验证成功时返回输入,或者在验证失败时返回 false。
使用严格比较(=== 或 !==)进行比较,例如 $result!==false。
if(filter_var($squid, FILTER_VALIDATE_INT)!==false ) {
//if it's here, it passed validation
}
您还可以使用 is_numeric 函数: http://php.net/manual/en/function.is-numeric.php