Validate Mobile number in php form

前端 未结 6 822
野趣味
野趣味 2021-01-18 17:47

I want to validate mobile number of 10 digits and also add a prefix of 0 when I enter into the database.



        
6条回答
  •  长情又很酷
    2021-01-18 18:11

    Probably the most efficient and well-readable form would be to use the libphonenumber library from Google. PHP fork is available on GitHub. It can help you not only to validate number itself, but you can check country code with it or even know if some number is valid for specific country (this lib knows which number prefixes are valid for many countries). For example: 07700 900064 is valid GB number, but 09700 900064 is not, even if they have same length.

    Here's how I would validate mobile phone number in your app:

    $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!';
    }
    

    $countryCode is two chars ISO 3166-1 code. You can check it for your country on Wikipedia.

提交回复
热议问题