Como definir a validação no número de telefone em PHP

Este é o meu código.

nunca defini a validação para o campo Número de telefone, tento "/^([0-9]{3})-[0-9]{3}-[0-9]{4}$/" este tipo de código para validação, Eu introduzo texto no campo Número de telefone, eles aceitam na infra-estrutura

O que posso fazer? para definir a validação para o campo Número de telefone.

<!DOCTYPE HTML>  
<html>
<head>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<style>
.error {color: #FF0000;} 
</style>
</head>
<body>  

<?php
$nameErr = $phoneErr = "";
$name =  $phone = "";

$error = 0;
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    // collect value of input field

     $name = htmlspecialchars($_REQUEST['name']);
     $phone = htmlspecialchars($_REQUEST['phone']); 


    if (empty($name)) {
        $nameErr = "* Name is required";
      $error = 1;
        // echo "Name is empty";
    }

    if (empty($phone)) {
        // echo "phone is empty";
        $phoneErr = "* Phone is required";
        $error = 1;
    }

}

function test_input($data) {
  $data = trim($data);
  $data = stripslashes($data);
  $data = htmlspecialchars($data);
  return $data;
}
?>

<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
    <h1>Login Form</h1>
  Name: <input type="text" name="name" onkeydown="return alphaOnly(event);" value="<?php echo $name ?>">
   <span class="error"> <?php echo $nameErr?></span>  
  <br></br>

  Phone: <input type="text" name="phone" value="<?php echo $phone ?>">
    <span class="error"> <?php echo $phoneErr?></span> 
   <br><br>

  <input type="submit"> 

  <br><br>

</form>

</body>
</html>

Preciso de validar o número de telefone no PHP, mas o exemplo não funciona. Como posso definir a validação para o número móvel

Author: vicky mahale, 2017-11-14

2 answers

de acordo com os comentários e o número de telefone de exemplo que indicou, este código irá validar o número de dígitos e os dois primeiros números do seu país, acabei de substituir + por 0, de certeza que não irão entrar mais.

$tel = '091-9869123456';

if(preg_match("/^[0-9]{3}-[0-9]{10}$/", $tel)) {
    echo "valid";
} else {
    echo "invalid";
}

agora para mais validação necessidade de verificar o código do país:

if(substr($tel, 0, 3) == '091'){
    echo "valid";
} else {
    echo "invalid, it should start with 091";
}

ou fazes isto com o mesmo preg_match assim.:

if(preg_match("/^[091]{3}-[0-9]{10}$/", $tel)) {
    echo "valid";
} else {
    echo "invalid";
}

Demonstração

 0
Author: Pedram, 2017-11-14 12:24:11

Porque é que precisa de validar o número de telefone usando php? Você pode fazê-lo usando JS como mostrado abaixo.

if (/^\+[-0-9]{6,20}$/.test(phoneNumber) == false) {
      alert('Wrong Phone Number format. Only numbers,+ and - are allowed. Format: \<Country Code\>\<Phone number\> Eg: +9199999999, +1-105-893-9334 etc');
    return;
} 
 0
Author: PeeKay, 2017-12-03 13:02:51