5

10桁の携帯電話番号を検証し、データベースに入力するときにプレフィックス0を追加したいと思います。

<?php

include ('database_connection.php');

$citystate = $_POST['citystate'];
$serviceprovider = $_POST['serviceprovider'];
$accept = $_POST['accept'];
if (isset($_POST['formsubmitted'])) {
    $error = array(); //Declare An Array to store any error message 

    if (isset($_POST['checkbox'])) {
        $mumbai = (in_array("mumbai", $_POST['checkbox']) ? 1 : 0);
        $pune = (in_array("pune", $_POST['checkbox']) ? 1 : 0);
        $banglore = (in_array("banglore", $_POST['checkbox']) ? 1 : 0);
        $mysore = (in_array("mysore", $_POST['checkbox']) ? 1 : 0);
    }

    if ($mumbai + $pune + $banglore + $mysore == 0) {
        $error[] = 'Please check atleast one SMS center';
    }

    if ($accept != 1) {
        $error[] = 'Please check terms ';
    }

    if (empty($_POST['mobileno'])) {//if no name has been supplied 
        $error[] = 'Please Enter a Mobile Number '; //add to array "error"
    }
    if (empty($_POST['mobileno'])) {//if no name has been supplied 
        $error[] = 'Please Enter a Mobile Number '; //add to array "error"
    } else {

        $mobile = $_POST['mobileno']; //else assign it a variable

        /* if( preg_match("^[0-9]{10}", $mobile) ){

          }

          else {

          $error[] = 'Your Mobile No is invalid  ';
          } */
    }
    if (empty($_POST['fname'])) {//if no name has been supplied 
        $error[] = 'Please Enter a First name '; //add to array "error"
    } else {
        $fname = $_POST['fname']; //else assign it a variable
    }

    if (empty($_POST['lname'])) {//if no name has been supplied 
        $error[] = 'Please Enter a Last name '; //add to array "error"
    } else {
        $lname = $_POST['lname']; //else assign it a variable
    }
    if (empty($_POST['email'])) {
        $error[] = 'Please Enter your Email ';
    } else {
        if (preg_match("/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/", $_POST['email'])) {
            //regular expression for email validation
            $email = $_POST['email'];
        } else {
            $error[] = 'Your EMail Address is invalid  ';
        }
    }


    if (empty($_POST['passwd1'])) {
        $error[] = 'Please Enter Your Password ';
    } else {
        $password = $_POST['passwd1'];
    }
    if (empty($_POST['passwd2'])) {
        $error[] = 'Please Verify Your Password ';
    } else {
        $password = $_POST['passwd2'];
    }
    if ($_POST["passwd1"] != $_POST["passwd2"]) {
        $error[] = 'Password does not match';
    }

    if (empty($error)) { //send to Database if there's no error ' //If everything's OK...
        // Make sure the mobile no is available:
        $query_verify_mobileno = "SELECT * FROM userdtls WHERE mobileno = '$mobile'";
        $result_verify_mobileno = mysqli_query($dbc, $query_verify_mobileno);
        if (!$result_verify_mobileno) {//if the Query Failed ,similar to if($result_verify_mobileno==false)
            echo ' Database Error Occured ';
        }

        if (mysqli_num_rows($result_verify_mobileno) == 0) { // IF no previous user is using this number .
            // Create a unique  activation code:
            //$activation = md5(uniqid(rand(), true));
            $query_insert_user = "INSERT INTO userdtls ( mobileno, serviceprovider, pass,  fname, lname, email, citystate, MUM, PUN, BNG, MYS ) VALUES ( '" . $mobile . "', '" . $serviceprovider . "', '" . $password . "', '" . $fname . "', '" . $lname . "', '" . $email . "', '" . $citystate . "','" . $mumbai . "', '" . $pune . "', '" . $banglore . "', '" . $mysore . "'  )";
        }
    }
}

今、私は携帯電話番号の検証で立ち往生しています。正規表現を使ってみました。

私がやりたいのは、10桁の電話番号を追加して、それが数字だけであることを確認することです。そうしないと、エラーが発生します。データベースに番号を入力するときに、携帯電話番号0にプレフィックスを追加して、0と10桁の番号のようにします。

4

6 に答える 6

6

このようなものを試してください:

$phoneNumber = $_POST['mobileno'];

if(!empty($phoneNumber)) // phone number is not empty
{
    if(preg_match('/^\d{10}$/',$phoneNumber)) // phone number is valid
    {
      $phoneNumber = '0' . $phoneNumber;

      // your other code here
    }
    else // phone number is not valid
    {
      echo 'Phone number invalid !';
    }
}
else // phone number is empty
{
  echo 'You must provid a phone number !';
}
于 2012-08-02T22:02:19.320 に答える
4

おそらく最も効率的で読みやすい形式は、Googleのlibphonenumberライブラリを使用することです。PHPフォークGitHubで入手できます。番号自体を検証するだけでなく、国コードを確認したり、特定の国で有効な番号があるかどうかを確認したりすることもできます(このライブラリは、多くの国で有効な番号プレフィックスを認識しています)。例:07700 900064は有効なGB番号ですが、同じ長さ09700 900064であってもそうではありません。

アプリで携帯電話番号を検証する方法は次のとおりです。

$phoneNumber = $_POST['mobileno'];
$countryCode="GB";

if (!empty($phoneNumber)) { // phone number is not empty
    $phoneUtil = \libphonenumber\PhoneNumberUtil::getInstance();
    $mobileNumberProto = $phoneUtil->parse($phoneNumber, $countryCode);
    if ($phoneUtil->isValidNumber($mobileNumberProto)) { // phone number is valid
        //here you know that number is valid, let's try to format it without country code but with 0 at the beginning (national number format)
        $phoneNumber = $mobileNumberProto->format($mobileNumberProto, PhoneNumberFormat::NATIONAL);
    } else {
        $error[] = 'Phone number not valid!';
    }
} else {
    $error[] = 'You must provide a phone number!';
}

$countryCode2文字のISO3166-1コードです。あなたはウィキペディアであなたの国のためにそれをチェックすることができます。

于 2015-03-02T20:08:12.697 に答える
1

インドの携帯電話番号の場合、それが最も簡単になります

if(is_numeric($num)){
if($num>=1000000000 && $num<=9999999999){
$num="0".$num;
}
else{
echo "Invalid Mobile Number";
}
}
else{
echo "Hey Buddy mobile numbers are always in digits";
}

このアイデアは、数字(1000000000)が最小の数値(10桁)であり、数値(9999999999)が携帯電話番号として使用できる最大の数値であるため、簡単で気が進まないという意欲から私を驚かせました。インドで。そして、もう1つのコードは、他のソリューションよりも高速に実行されます。

于 2015-03-28T10:01:11.140 に答える
0

次のような正規表現を試しましたか?

if( !preg_match("/^([0-1]-)?[0-9]{3}-[0-9]{3}-[0-9]{4}$/i", $phone) ) {
   echo 'Please enter a valid phone number';
}
于 2012-08-02T22:03:16.633 に答える
0
if(!ereg("^[7-9]{1}[0-9]{9}$", $mob)) { return false; }
于 2016-06-30T12:07:21.553 に答える
0

pravin tripathiの答えを改善する:

if(!ereg("^[7-9]{1}[0-9]{9}$", $mob)) { return false; }

ereg()は非推奨であるため、次を使用できます。

preg_match("/^[7-9]{1}[0-9]{9}$/i", $mobile_no)

これは、インドの携帯電話番号を検証するのに役立ちます。これは、10桁で、今日の時点で7、8、または9から始まるためです。新しい数字が導入された場合は、いつでもパターンを変更できます。

于 2017-01-17T21:21:30.683 に答える