我正在使用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
您可以使用正则表达式:
if (!preg_match('~^\d{10}$~', $value)) return false;
$str = '0123456789';
if(preg_match('/^\d{10}$/', $str))
{
echo "valid";
}
else
{
echo "invalid";
}
0不是整数的有效起始编号。 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