Есть ли простой способ использовать FILTER_SANITIZE_NUMBER_INT для проверки номера телефона (в форме)? - PullRequest
0 голосов
/ 20 апреля 2019

Я пытаюсь проверить номер телефона с помощью PHP и хотел бы узнать, есть ли способ сделать это с помощью FILTER_SANITIZE_NUMBER_INT вместо regex.

Мне нужен пароль для применения формата 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;
    }
}

Ответы [ 2 ]

0 голосов
/ 20 апреля 2019

Я предпочитаю использовать функции 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";
}
0 голосов
/ 20 апреля 2019

Я бы использовал preg_match вместо этого, поскольку вы можете покрыть все ваши потребности в одном утверждении. Это регулярное выражение гарантирует, что значение должно иметь 10 цифр с необязательным - после третьей и шестой цифры.

$phone = clean_input($_POST["phone"]);
$isValid = preg_match('/^\d{3}-?\d{3}-?\d{4}$/', $phone);

Демонстрация на 3v4l.org

...