codeigniter формируют проверку с номерами телефона

Что хороший путь состоит в том, чтобы проверить номера телефона, вводимые в codeigniter?

Это - мой первый раз, пишущий приложение, и я действительно не понимаю regex вообще.

Действительно ли легче иметь три поля ввода для номера телефона?

8
задан Kara 8 August 2017 в 17:27
поделиться

4 ответа

Вот классное регулярное выражение, которое я нашел в Интернете. Он проверяет число почти в любом американском формате и преобразует его в (xxx) xxx-xxxx. Я думаю, это здорово, потому что тогда люди могут ввести любой 10-значный номер телефона в США, используя любой формат, который они используют, и вы получите из него правильно отформатированный номер.

Вот вся функция, которую вы можете поместить в свой класс MY_form_validation. Я хотел, чтобы в моей форме были пустые поля, поэтому вам придется изменить ее, если вы хотите принудительно ввести значение.

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;
        }
    }
}
15
ответ дан 5 December 2019 в 07:58
поделиться

Лучший способ не проверять телефонные номера вообще, если только вы не уверены на 100%, что имеете дело только с телефонными номерами в США или, по крайней мере, в Северной Америке. Как только вы допускаете телефонные номера из Европы, я не думаю, что есть регекс, который охватывает все возможности.

.
3
ответ дан 5 December 2019 в 07:58
поделиться

strip out the non-digits with this:

$justNumbers = preg_replace( '/\D/', $_POST[ 'phone_num' ] );

and see if there's enough characters!

$numRequired = 7; // make your constraints here
if( strlen( $justNumbers ) < $numRequired ){ /* ... naughty naughty ... */ }

this is loose, course, but will work for international numbers as well (as all it's really doing is see if there's over 7 numbers in the input).

just change the number of required digits according your specification.

.
3
ответ дан 5 December 2019 в 07:58
поделиться

Решение с регулярным выражением, как объяснил Дэн, было бы способом сделать это - но вы возможно, захочется вообще переосмыслить проверку телефонных номеров. Что, если пользователь хочет добавить заметку, как на бумаге? - Я вижу, что многие значения, введенные в поля номера телефона, выглядят так:

307-555-2323 (домашний)

или

307-555-3232 после 18:00

Я думаю, что сегодня мы можем предположить пользователи знают, что ввести.

0
ответ дан 5 December 2019 в 07:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: