Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Привести номер телефона в нормальное состояния для записи в бд


Recommended Posts

Добрый день, на сайте установлена маска ввода телефона формата +38 (099) 999-99-99, но такое записывать  в базу вроде не комильфо...

Как можно при той же регистрации убирать спец символы и пробелы с номера и записывать его в формате 380999999999...

При этом наверное наверняка нужно опять чистить и сравнивать при том же входе пользователя.

Надіслати
Поділитися на інших сайтах

Только что, mpn2005 сказал:

Можно оставить только цифры прогнав через регулярку:


$phone = preg_replace('/[^0-9]/', '', $phone); 

 

как я понял, автор хочет потом видеть "красиво", на выходе. смысл сначала разбирать, а потом собирать...не очень понял автора, в чем проблема фен-шуйности записи "в виде", но это отдельно.

 

Надіслати
Поділитися на інших сайтах

1 минуту назад, anboza сказал:

как я понял, автор хочет потом видеть "красиво", на выходе. смысл сначала разбирать, а потом собирать...не очень понял автора, в чем проблема фен-шуйности записи "в виде", но это отдельно.

Может там авторизация по номеру телефона.

Я бы тоже хранил отформатированный, а при сравнении резал бы лишнее.

 

Напимер так:

$phone = str_replace(array(' ', '-', '+', '(', ')'), '', $this->request->post['phone']);
$query = $this->db->query("SELECT * FROM `" . DB_PREFIX . "customer` WHERE REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(telephone,' ',''),')',''),'(',''),'-',''),'+','') = '" . $this->db->escape($phone) . "'");

 

  • +1 1
Надіслати
Поділитися на інших сайтах

1 час назад, mpn2005 сказал:

Может там авторизация по номеру телефона.

Я бы тоже хранил отформатированный, а при сравнении резал бы лишнее.

 

Напимер так:


$phone = str_replace(array(' ', '-', '+', '(', ')'), '', $this->request->post['phone']);
$query = $this->db->query("SELECT * FROM `" . DB_PREFIX . "customer` WHERE REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(telephone,' ',''),')',''),'(',''),'-',''),'+','') = '" . $this->db->escape($phone) . "'");

 

А не подскажите с валидацией 

!preg_match('/^\+380\d{3}\d{2}\d{2}\d{2}$/', $this->request->post['phone'])

Все работает когда впереди +, но если телефон формата 380999999999

то

!preg_match('/^\380\d{3}\d{2}\d{2}\d{2}$/', $this->request->post['phone'])

 

не проходит...

Надіслати
Поділитися на інших сайтах

А зачем такие сложности? Лучше сделать поле ввода номера с маской.

А то требовать от покупателя вводить именно в этом формате - вариант не очень.

Надіслати
Поділитися на інших сайтах

12 минут назад, mpn2005 сказал:

А зачем такие сложности? Лучше сделать поле ввода номера с маской.

А то требовать от покупателя вводить именно в этом формате - вариант не очень.

я ставлю маску +3 (0999) 999 - 99 -99

 

Дальше чищу телефон от + тире и тд как вы посоветовали...

и заменяю им post phone

 

дальше идет валидация уже очищенного телефона от спецсимволов

Надіслати
Поділитися на інших сайтах

1 минуту назад, zomo сказал:

дальше идет валидация уже очищенного телефона от спецсимволов

Тогда там уже нет никаких плюсов. Только цифры.

Остаётся проверить на длину и нужное количество первых цифр.

Берём функцией substr n первых цифр и сравниваем с нужным префиксом.

 

 

Надіслати
Поділитися на інших сайтах

2 минуты назад, mpn2005 сказал:

Тогда там уже нет никаких плюсов. Только цифры.

Остаётся проверить на длину и нужное количество первых цифр.

Берём функцией substr n первых цифр и сравниваем с нужным префиксом.

 

 

!preg_match('/^(380)([0-9]{9})$/', $this->request->post['phone']

Подойдет ?

Надіслати
Поділитися на інших сайтах

 

36 минут назад, mpn2005 сказал:

Да. Для отфильтрованного то что надо.

Спасибо огромное

Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.