我正在使用PHP filter_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
使用 preg_match
$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 是八进制数的起始数。
电话号码是字符串,而不是整数。您必须使用正则表达式来验证它。
可能需要检查返回值是假还是 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