проверка формы кодового ключа с номерами телефонов - PullRequest
8 голосов
/ 21 декабря 2009

Какой хороший способ проверки телефонных номеров, вводимых в codeigniter?

Я впервые пишу приложение, и я не совсем понимаю регулярные выражения.

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

Ответы [ 4 ]

15 голосов
/ 21 декабря 2009

Вот классное регулярное выражение, которое я узнал в Интернете. Он проверяет число практически в любом американском формате и преобразует его в (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;
        }
    }
}
3 голосов
/ 21 декабря 2009

убрать без цифр с этим:

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

и посмотрите, достаточно ли символов!

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

это, конечно, потеряно, но будет работать и для международных номеров (поскольку все, что он на самом деле делает, это видит, если на входе более 7 номеров).

просто измените количество требуемых цифр в соответствии с вашими спецификациями.

3 голосов
/ 21 декабря 2009

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

0 голосов
/ 03 июня 2010

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

307-555-2323 (дома)

или

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...