Стандартизируйте номера телефонов в отправленной форме с ColdFusion - PullRequest
1 голос
/ 24 декабря 2011

Мы ищем способ стандартизировать ввод телефонных номеров, введенных в форму, например, (444) 555-666.Прямо сейчас вы можете ввести его в любом формате, например 4445556666 или 444-555-6666, и здесь нет стандартизации.Я хотел бы, чтобы при преобразовании числа в базу данных число было преобразовано в прежний формат.

Вот код HTML для формы:

<tr>
  <td align="right">
    <label for="phone_number">Telephone:</label>
  </td>
  <td>
    <input type="text" name="phone_number" value="#form.phone_number#" />
  </td>
</tr>

Это, вместе ссо всеми другими данными, вводится в базу данных с помощью команды INSERT INTO cfquery.Я могу предоставить этот код при необходимости.Вот сокращенная версия:

INSERT INTO Schedule_Registrations(
  phone_number
)
VALUES(
  '#FORM.phone_number#'
)

Любые мысли по этому поводу будут оценены.

1 Ответ

9 голосов
/ 24 декабря 2011

Способ, который я выбрал для решения этой проблемы, заключается в том, чтобы хранить необработанные числа в базе данных, а затем отображать их так, как я хочу, на веб-странице.Чтобы нормализовать числа, используйте простое регулярное выражение:

<cfset cleanPhoneNumber = reReplace(form.phoneNumber, "[^0-9]", "", "ALL")>

Сохраните cleanPhoneNumber в базе данных, а затем используйте функцию простого формата для его отображения:

<cffunction name="formatPhoneNumber">
    <cfargument name="phoneNumber" required="true">

    <cfif len(phoneNumber) EQ 10>
        <!--- This only works with 10-digit US/Canada phone numbers --->
        <cfreturn "(#left(phoneNumber, 3)#) #mid(phoneNumber, 4, 3)#-#right(phoneNumber, 4)#">
    </cfif>

    <cfreturn phoneNumber>
</cffunction>

Проблема заключается в том, что внеВ США нет стандартизированного способа форматирования чисел (что я нашел).Также будьте осторожны, если вы разрешаете пользователю вводить добавочный номер в поле номера телефона.

...