如何在PHP中设置电话号码验证

如何在PHP中设置电话号码验证,php,jquery,html,validation,Php,Jquery,Html,Validation,这是我的代码: 我从未为电话号码字段设置过验证,我尝试了“/^([0-9]{3})-[0-9]{3}-[0-9]{4}$/”这种类型的验证代码, 我在电话号码字段中输入文本,他们在后端接受 我能做什么?用于电话号码字段的设置验证 <!DOCTYPE HTML> <html> <head> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"&g

这是我的代码:

我从未为电话号码字段设置过验证,我尝试了
“/^([0-9]{3})-[0-9]{3}-[0-9]{4}$/”
这种类型的验证代码, 我在电话号码字段中输入文本,他们在后端接受

我能做什么?用于电话号码字段的设置验证

<!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>

.错误{color:#FF0000;}

为什么需要使用
php
验证电话号码? 您可以使用JS来完成它,如下所示

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;
} 
if(/^\+[-0-9]{6,20}$/.test(phoneNumber)==false){
警报(“错误的电话号码格式。只允许号码,+和-。格式:\\Eg:+919999999,+1-105-893-9334等”);
返回;
} 
根据您给出的注释和示例电话号码,此代码将验证您所在国家的位数和前两个号码,我刚刚将
+
替换为
0
,确保他们不会输入加号

现在需要查看国家代码以了解更多验证信息:

或者使用相同的
preg\u match
执行此操作,如下所示:


很抱歉回复一篇旧帖子

但是,您可以通过调用web服务来检查该号码是否存在。 在本例中,我找到了numverify.com,它允许验证电话号码是否存在

创建免费帐户(允许您每月发出250个请求)后,您可以在PHP中调用以下基本代码:

// set API Access Key
$access_key = 'YOUR_ACCESS_KEY';

// set phone number
$phone_number = '14158586273';

// Initialize CURL:
$ch = curl_init('http://apilayer.net/api/validate?access_key='.$access_key.'&number='.$phone_number.'');  
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

// Store the data:
$json = curl_exec($ch);
curl_close($ch);

// Decode JSON response:
$validationResult = json_decode($json, true);

我不知道这是否可靠,但它与我的电话号码一起工作,甚至检索到了公司运营商。

请三思。。。。您“真的”需要验证电话号码吗?验证电话号码的唯一方法是拨打电话并验证其有效性(已连接且属于提交电话号码的用户)。这与验证电子邮件完全相同。每个人都只是检查电子邮件的格式是否有效,没有人检查它是否确实存在。我不明白你的意思,关键是电话号码只是数字列表,没有特定的格式。“有效”电话号码取决于上下文,您是否可以通过键入世界上特定网络和位置的电话中的这些数字来联系到有效用户。电子邮件地址遵循特定的格式,如果不使用该格式,则会使其无效。就是这样。@B001验证与验证不同,但您可以根据格式验证电子邮件地址,而不必对电话号码进行验证。例如,+1-555-53240015555324在从美国境内拨打电话时代表完全相同的用户,但如果您不是从美国拨打电话,5555324可能不代表相同的用户。“确保他们不会输入plus”-如果表单允许,我总是这样做。“为什么需要使用
php
验证电话号码?”例如,因为JavaScript可以停用或更改。这是客户端代码。
if(substr($tel, 0, 3) == '091'){
    echo "valid";
} else {
    echo "invalid, it should start with 091";
}
if(preg_match("/^[091]{3}-[0-9]{10}$/", $tel)) {
    echo "valid";
} else {
    echo "invalid";
}
// set API Access Key
$access_key = 'YOUR_ACCESS_KEY';

// set phone number
$phone_number = '14158586273';

// Initialize CURL:
$ch = curl_init('http://apilayer.net/api/validate?access_key='.$access_key.'&number='.$phone_number.'');  
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

// Store the data:
$json = curl_exec($ch);
curl_close($ch);

// Decode JSON response:
$validationResult = json_decode($json, true);