Как получать отредактированные номера?

Подскажите как получать из бд отредактированные номера в таком формате + 7 (922) 000 - 00 - 00.

Дополнительно:

ШТО

  • Положить в бд телефон в формате + 7 (922) 000 - 00 - 00, после чего взять из бд телефон в формате + 7 (922) 000 - 00 - 00
  • Такой формат - это частный случай "красивого" отображения конкретно сотового номера.
    В базе номера следует держать без всяких красивостей, иначе их затрахаешься искать, например.
    А оформить уже полученный из базы номер "красиво" можно буквально, совершенно в ЧЕМ УГОДНО.
  • Дмитрий, Паршивый совет, зачем так базу не любите?
  • Владимир Коротенко, в чем паршивость?
  • Дмитрий, Больший обьем, сложность поиска, сложность понимания и поддержки, вынос логики из бд в приложение.
  • Владимир Коротенко, про поиск в задаче ничего не было. Более того если телефон как в задаче используется только для того что бы вытащить его в таком виде - ещё раз в чем паршивость?
  • Дмитрий, обьем
  • Владимир Коротенко, и что обьем? нам неизвестно что в строке еще хранится, нам неизвестно какая база данных - в том же постгресе нам главное что бы tupple не вылез в тоаст. И в чем паршивость?
  • Владимир Коротенко, а теперь забьем на игры и ответим по существу. Был задан дурацкий вопрос - который можно трактовать как угодно, то ли у автора в бд накопилось вагон треша и он хочет на уровне приложения его приводить к стандартному виду, либо база еще пустая и автор задает вопрос как это сделать, либо - вагон всяких либо. На этот вопрос был мною дан абсолютно точный ответ. Но абсолютно бесполезный. Вы пытаясь доказать что мой ответ - лажа, пытаетесь играть в телепата и наполнить вопрос автора смыслом. Это еще более паршиво чем мой ответ, ибо как известно все телепаты в отпуске.

    Шерлок Холмс и доктор Ватсон летели на воздушном шаре. Но был такой сильный туман, что они заблудились. Но вот порыв ветра, облака рассеиваются, Шерлок Холмс и доктор Ватсон приземляются и видят человека, пасущего овец.
    — Скажите, любезнейший, а где мы находимся? — спрашивает доктор Ватсон.
    Подумав, пастух отвечает:
    — В гондоле воздушного шара.
    Новый порыв ветра подхватывает шар, и Шерлок Холмс с доктором Ватсоном летят дальше.
    — Ох, уж эти айтишники! — восклицает Холмс.
    — Постойте, Холмс, но как вы догадались?
    — Это элементарно, Ватсон! Он ответил, подумав. И дал совершенно верный, но совершенно бесполезный ответ.

  • Дмитрий, Я в общем то телепат с большим опытом допросов по заявкам "я ничего не делал оно само"

    Итак что мы имеем номер телефона.
    1. числовой вид Bigint 8 Bytes
    2. nvarchar (n) - n*2 bytes (46 bytes)

    То есть ваш вариант займет в 5,75 раз больше

    дальше считаете сколько займет индекс https://learn.microsoft.com/ru-ru/sql/relational-d...
    .

    Дальше реальная задача выбрать всех абонентов с кодом оператора 922
    В общем мораль всего этого в том что данные нужно хранить в нормализованном виде, а не абы как.

  • Владимир Коротенко, Вы хреновый телепат. С чего вы вообще взяли что телефон используется в поиске и там нужен индекс? Потому что в последних ваших проектах оно есть? Ибо в вопросе звучит как выводить красиво - но вы уже начали индексы считать? Ну найдется вагон проектов где телефон дополнительное поле, и используется для справочной информации, и индекс там нахрен не нужен - и более того вреден.

    То есть вы посмотрели на воздушный шар, за находящихся там решили куда им надо лететь, какой газ у них в балоне, насколько они голодны и выдали решение. Это очень паршивый подход. Куда как паршивее моего ответа

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

    Зачем столько буков?
    И кстати довольно вот редко встречал что бы телефон был просто строчкой, практически всегда на него завязана важная информация

  • Владимир Коротенко, А я вам говорю что не надо свой опыт и свой проект - распространять на всю вселенную. К январю надо готовить индексы теплую одежду - хорошая практика, теория сезонов и так далее, до тех пор пока вы для себя не открываете южное полушарие, там в январе лето. По этому перед тем когда считать вес теплой одежды - надо определится на каком мы континенте - можа мы в Австралии
  • Владимир Коротенко,

    И кстати довольно вот редко встречал что бы телефон был просто строчкой, практически всегда на него завязана важная информация

    А вот у меня под рукой в данный момент CRM в которой телефон справочная информация, и не более. никаких поисков ничего. А учитывая что работа идет со всякими госниками - в строке телефона забита всякая чушь аля доб. (123) или позвать Ларису Ивановну. По этому поле типа текст там вполне ок. Что дальше?

  • Дмитрий, Без флуда пожалуйста, не компетентны исчезните в тумане
  • Владимир Коротенко, никуда исчезать не собираюсь. будет лениво - не буду отвечать. будет не лениво - буду. Не хотите читать - исчезайте сами, хорошего пути.
  • Дмитрий,

    А вот у меня под рукой в данный момент CRM в которой телефон справочная информация, и не более. никаких поисков ничего. А учитывая что работа идет со всякими госниками - в строке телефона забита всякая чушь аля доб. (123) или позвать Ларису Ивановну. По этому поле типа текст там вполне ок. Что дальше?

    Ну что вам сказать, заказчик себя не любит. Любая интеграция и он на шлюзе будет отлавливать ошибки. То есть студенты не осилили, а тысячи людей сейчас мучаются.

  • Владимир Коротенко, заказчик вполне себя любит. и там где ему надо - названия организаций, подразделения, иерархия по которым они как раз и делают поиск, все четко. А телефон это так. Типа комментов. Которые тоже есть
    И еще раз - вы берете свой проект где телефон очень важная информация и где надо к нему относится соотвествующе - распространяете на всю вселенную, в том числе и на текущий вопрос где по это ничего не сказано, и вообще не известно, агрументируя - что раз у вас так, значит и здесь так, и сваливаетесь на личности когда вам говорят что вселенная на вашем проекте не кончается. Вы, батенька, не телепат, вы, батенька, религиозный фанатик.
  • Итак подойдем комплексно.

    телефон это целое число или строка символов
    примеры
    + 7 (922) 000 - 00 - 00 // Свердловская область?
    1-800-NO-COPYS

    Второе только как строку хранить.
    Первое как число
    Дальше частности
    8 (922) 000 - 00 - 00 // обрабатываете особо

    Дальше переходим к техническим деталям

    На стороне клиента вы используете html 5 input=tel с шаблоном проверки
    в результате получаете
    79220000000
    что и отправляете на сервер
    На клиенте у вас есть что то типа
    { "phone" : 79220000000 }

    Немного форматирования и у вас снова + 7 (922) 000 - 00 - 00

    Кроме того поищите что то типа Phone validator для вашего фреймворка, думаю найдется

    Апдейт

    Итак посмотрел на ваши вопросы, держите компонент
    https://madewithvuejs.com/vuephonenumberinput

     

    Для решения данной проблемы вы можете воспользоваться услугами фрилансеров. Мы выполним необходимую работу быстро и качественно.

     

      • Как получать отредактированные номера?Есть ответ
      • 09.04.2024
      Ответить

      Для получения отредактированных номеров вам необходимо использовать функцию filter_var() с флагом FILTER_SANITIZE_NUMBER_INT. Этот флаг позволяет удалить все символы, кроме цифр, из строки, что позволяет получить только числовое значение.

      Пример использования:

      Таким образом, после применения этой функции к вашему номеру телефона, вы получите отредактированный номер, содержащий только цифры. Однако, учтите, что этот метод не проводит никакой валидации номера, поэтому перед использованием его важно убедиться, что номер соответствует ожидаемому формату.

      • Как получать отредактированные номера?Есть ответ
      • 07.04.2024
      Ответить

      Для получения отредактированных номеров в PHP, вы можете использовать функцию preg_replace() в сочетании с регулярными выражениями. Вот пример кода, который позволит вам получить отредактированные номера:

      php
      $phone_number = '(123) 456-7890';
      $edited_phone_number = preg_replace('/\D/', '', $phone_number);

      echo $edited_phone_number; // Выведет: 1234567890

      В данном примере мы используем регулярное выражение '/\D/' для удаления всех символов, кроме цифр, из строки с номером телефона. Функция preg_replace() заменяет все нецифровые символы на пустую строку, тем самым оставляя только цифры.

      Если вам нужно провести более сложную обработку номера телефона, например, добавить дополнительные символы или форматирование, вы можете настроить регулярное выражение соответствующим образом.

      Не забывайте проверять входные данные на корректность перед их обработкой, чтобы избежать ошибок и непредвиденного поведения вашего кода.

    Оставить комментарий