Но этот код отбрасывает городские номера.
Как сделать такой код, который бы проверял переменную
$mail['phone']
И, если бы в переменной были бы какие-то символы, кроме: 0-9, пробел, +, (, ), -
То выводилась бы ошибка?
Помогите написать регулярку!
Саныч
Отправлено: 24 Июля, 2014 - 14:05:35
Участник
Покинул форум
Сообщений всего: 1365
Дата рег-ции: Июль 2010 Откуда: Украина, Запорожье
Помог: 62 раз(а)
Webtest пишет:
И, если бы в переменной были бы какие-то символы, кроме: 0-9, пробел, +, (, ), -
/#^[\d\s\+\(\)\-]+$#/
Но учтите, что такая проверка посчитает строку скажем из десятка скобочек валидным номером телефона
----- Все возражают против того, что я гений, хотя никто еще так меня не назвал. - Орсон Уэллс
Webtest
Отправлено: 24 Июля, 2014 - 14:14:37
Посетитель
Покинул форум
Сообщений всего: 286
Дата рег-ции: Июнь 2014
Помог: 0 раз(а)
Саныч, а как твой код встроить, чтобы он показывал сам телефон?
Вот это ничего невыводит:
НО, как сделать так, чтобы если в нем попадались другие знаки, кроме тех что я перечислил, то он не обрезал номер, например, если написать номер: 8(952)000 00 0 00, то он же и выводится.
А если написать номер: 8(952)0фыв00 00 0 00, то выводится 8(952)0, а надо чтобы ничего не выводилось. (Добавление)
Или как сделать проверку самой $str НЕ через регулрку, чтобы в ней, кроме этих символов ничего не было?
Я вот думаю, может перед прегом делать проверку, если в строке есть символы, кроме допустимых, то ошибка, как это сделать?
DelphinPRO
Отправлено: 24 Июля, 2014 - 14:28:30
Активный участник
Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012
Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010
Помог: 53 раз(а)
из личного опыта, дурацкая идея проверять валидность ввода, лучше вычищайте текст от мусора и получите чистый номер, а дальше проверяйте количество символов
Webtest
Отправлено: 24 Июля, 2014 - 14:33:07
Посетитель
Покинул форум
Сообщений всего: 286
Дата рег-ции: Июнь 2014
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008 Откуда: Альфа Центавра
Помог: 353 раз(а)
DlTA пишет:
из личного опыта, дурацкая идея проверять валидность ввода, лучше вычищайте текст от мусора и получите чистый номер, а дальше проверяйте количество символов
Из личного опыта, а так же из недавнего обсуждения в скайпе - ни в коем случае нельзя очищать и проверять потом кол-во символов (цыфирь). Потому что:
+Х - это число от 1 до 3 знаков - код страны (Х) - от 3 до 5 знаков - код региона (областные и районные АТС) Х-Х-Х - конечный номер абонента, может принимать формы: ххх-хх-хх, хх-хх-хх, х-хх-хх
Например код РФ = +7, а код Украины +38 - очистка от "лишних" символов лишит тебя возможности узнать код страны. А как я написал выше - бывают и трехзначные коды стран.
Например региональный "виртуальный" код билайна (один из) в РФ - 906, а региональный областной код Калуги - 4842, а Москвы - 495.
Так что правильным решением будет четко определить маску ввода телевона и проверять её на клиенте в js. А на сервере валидировать сформированную js строку и ожидать там четко отсепарированные данные, предпочтительно в таком виде:
Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014
Помог: 57 раз(а)
DeepVarvar пишет:
Например код РФ = +7, а код Украины +38 - очистка от "лишних" символов лишит тебя возможности узнать код страны. А как я написал выше - бывают и трехзначные коды стран
А как, простите, АТС определяет код страны, региона и прочие?
Пользователь же-ж на телефоне просто цифирки набирает подряд...
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.