Phone number validation in php codeigniter Phone number validation in php codeigniter codeigniter codeigniter

Phone number validation in php codeigniter


This is always work for me:

$this->form_validation->set_rules('mobile', 'Mobile Number ', 'required|regex_match[/^[0-9]{10}$/]'); //{10} for 10 digits number


take a look at the following. regex for international numbers. You will need to check against multiple regex. If the number does not match the first regex(us phone numbers) then check it against the international regex. If neither match, fail the test


I have a solution doesn't need CodeIgniter form rules. But it works perfectly in my CodeIgniter project.

This solution uses International Telephone Input plugin.

Behold the steps:

views.php

<link rel="stylesheet" href="<?= base_url("resources/css/intl-tel-input/intlTelInput.css");?>"><!-- Somewhere in your code --><input name="phone" id="phone" class="form-control" type="phone" required><!-- Your scripts place --><script src="<?= base_url("ressources/js/intl-tel-input/intlTelInput.js"); ?>"></script><script>    // Initialization    var input = document.querySelector("#phone");    var intl = window.intlTelInput(input);    // Assuming that the submit button of your form is IDed by '#quote_form'    $('#quote_form').submit(function(event) {        var input = $('#phone');        // My custom check        if ( (input.val().length == 10 && input.val().startsWith('0')) ||            (input.val().length == 9 && !input.val().startsWith('0'))) {           // Here, before submitting the form, I changed the input value            // by what the plugin provides            // (which include the country code and the without-zero phone number)           // The value may be +24381234567           input.val(intl.getNumber());        }        else {            // In the case when the user types an invalid phone number            // But you can do more by displaying a error message            event.preventDefault();        }    });</script>

controller.php

// Somewhere in your controller code...if (isset($_POST['request'])) {    // HERE IS THE INTERESTING PART OF THIS SOLUTION    // You don't need any extra rules to validate the phone number value    // No need a regex that supports all the country codes    // As when that code comes in, it's valided and support all the country code    $this->form_validation->set_rules('phone', 'Numéro de téléphone', 'required');    // You can continue here with your app code.}

There you go! Your model must be the same, it doesn't need any change.