6

私はここから電話の検証なしのコールバック機能を使用しました。

function valid_phone_number_or_empty($value)
{
    $value = trim($value);

    if ($value == '') {
            return TRUE;
    }
    else
    {
            if (preg_match('/^\(?[0-9]{3}\)?[-. ]?[0-9]{3}[-. ]?[0-9]{4}$/', $value))
            {
                    return preg_replace('/^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/', '($1) $2-$3', $value);
            }
            else
            {
                    return FALSE;
            }
    }
}

しかし今問題はそれが電話を受け入れないということです-11から13桁であるヨーロッパ諸国と世界の他の地域からのいいえ。誰かが私にそれがすべての国に普遍的であるための他の検証を提供できますか?

4

4 に答える 4

22

これは常に私にとってはうまくいきます:

$this->form_validation->set_rules('mobile', 'Mobile Number ', 'required|regex_match[/^[0-9]{10}$/]'); //{10} for 10 digits number
于 2015-09-23T13:34:46.933 に答える
3

以下をご覧ください。 国際番号の正規表現。複数の正規表現をチェックする必要があります。番号が最初の正規表現(私たちの電話番号)と一致しない場合は、国際正規表現と照合してください。どちらも一致しない場合は、テストに失敗します

于 2012-05-31T18:46:09.403 に答える
0

CodeIgniterフォームルールを必要としないソリューションがあります。しかし、それは私のCodeIgniterプロジェクトでは完全に機能します。

このソリューションは、InternationalTelephoneInputプラグインを使用します。

手順を確認してください。

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.
}

どうぞ!モデルは同じである必要があり、変更する必要はありません。

于 2019-10-20T05:58:01.963 に答える
-1
$this->form_validation->set_rules('newphone','newphone', 
'required||matches[repassword]|max_length[10]|min_length[10]|xss_clean|
callback_isphoneExist');
于 2017-01-11T06:25:17.003 に答える