Настройка проверки валидности

Тема в разделе "PHP", создана пользователем NeoCortex33, 2 янв 2014.

  1. NeoCortex33

    NeoCortex33

    Регистрация:
    11 ноя 2013
    Сообщения:
    10
    Симпатии:
    2
    Помогите, пожалуйста!
    На сайте есть форма обратного звонка. Валидность ввода номера телефона проверяется через preg_match. Необходимо разрешить пользователю при вводе номера использовать знаки пробела (несколько раз, потому как сейчас можно вводить всего 1 раз, а если 2 раза поставить, то выдает ошибку), круглые скобки (), тире -, плюс +. При этом, чтобы эти условия были необязательными, т.е можно вводить номер с плюсом, а можно и без него/со скобочками или без них и тп.


    и вот такой еще кусочек


    Или вообще, как написать, чтобы условия не проверялись? Пусть хоть собачек там понаставят

    PS: бьюсь уже 2е суток, но не получается :banghead:
     
  2. denya

    denya

    Регистрация:
    2 мар 2013
    Сообщения:
    129
    Симпатии:
    35
    Вот этот кусок описывает правила. Сейчас разрешены только цифры длиной от 5 до 20. Чтобы добавить дополнительные символы в разрешенные, внесите их в квадратные скобки: [0-9-+() ] - это если очень примитивно.
    --- Добавлено, 4 янв 2014 ---
    Гуглите в сторону регулярных выражений. Лучше бы тут привели формат, который хотели бы валидировать.
     
  3. NeoCortex33

    NeoCortex33

    Регистрация:
    11 ноя 2013
    Сообщения:
    10
    Симпатии:
    2
    Спасибо. Как раз по регулярным выражениям и гуглила, но, к сожалению, вот этим не отделаешься [0-9-+() ], там что-то более мудреное надо написать.
    Я изначально делала запись [0-9+ ] - можно было все что угодно писать в форме, потом перестало разрешать.. А теперь ни плюсов, ни пробелов не разрешает. Да даже пробелы вот с такой записью не проходят [0-9\s].

    Исходя из написанного в этой статье


    Легче всего было бы написать вот так if (!preg_match("/^[0-9\s\D]{5,20}$/", $phone)), но.. не работает :(
     
  4. denya

    denya

    Регистрация:
    2 мар 2013
    Сообщения:
    129
    Симпатии:
    35
    Я подстраиваю ввод данных от клиентов под необходимый мне формат, используя javascript. Неудобно анализировать номера телефонов, которые вводят пользователи, т.к. у каждого он выглядит по-разному. Для "подстраивания" используется masked-input плагин (http://digitalbush.com/projects/masked-input-plugin/). В нем задал маску +38 (999) 999-99-99 для Украины - теперь все телефоны выглядят одинаково. А на стороне сервера я уже точно знаю в каком виде должны прийти данные и выполняю необходимую валидацию.
     
  5. DanilaCh

    DanilaCh

    Регистрация:
    13 мар 2014
    Сообщения:
    0
    Симпатии:
    0