我正在尝试使用PHP验证电话号码,并且想知道是否可以使用FILTER_SANITIZE_NUMBER_INT而不是正则表达式来进行验证。
我需要密码来强制执行xxx-xxx-xxxx格式(允许'-'),并且最大长度为12个字符。
到目前为止,这是我的代码。这项工作是否可以验证xxx-xxx-xxxx格式的任何数字?
$phone = clean_input($_POST["phone"]);
if (empty($phone)) {
$phoneErr = "Valid phone number required";
$isValid = false;
} else {
if (!filter_var($phone, FILTERSANITIZE_NUMBER_INT)) ;
$phone_to_check = str_replace("-", "", $filtered_phone_number);
if (strlen($phone_to_check) < 10 || strlen($phone_to_check) > 12) {
$isValid = false;
}
}
答案 0 :(得分:0)
我会改用preg_match
,因为您可以在一份声明中满足您的所有需求。此正则表达式可确保该值必须具有10位数字,并在第三和第六位数字后加上可选的-
。
$phone = clean_input($_POST["phone"]);
$isValid = preg_match('/^\d{3}-?\d{3}-?\d{4}$/', $phone);
答案 1 :(得分:0)
我更喜欢将preg_match()
函数用于这种正则表达式。
基于您的模式的示例
$phone = '000-000-0000';
if(preg_match("/^[0-9]{3}-[0-9]{3}-[0-9]{4}$/", $phone)) {
// $phone is valid
}
要使用FILTER_SANITIZE_NUMBER_INT()
进行验证,请尝试下面的代码
function validate_phone_number($phone)
{
$filtered_phone_number = filter_var($phone, FILTER_SANITIZE_NUMBER_INT);
if (strlen($filtered_phone_number) < 12) {
return false;
} else {
return true;
}
}
下面是我们刚刚创建的函数的用法:
$phone = "444-444-5555";
if (validate_phone_number($phone) == true) {
echo "Phone number is valid";
} else {
echo "Invalid phone number";
}