使用ColdFusion标准化提交表单中的电话号码

Nie*_*che 1 coldfusion coldfusion-9

我们正在寻找一种方法来标准化输入表格中输入的电话号码,例如,(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>
Run Code Online (Sandbox Code Playgroud)

这与所有其他数据一起使用cfquery INSERT INTO命令输入数据库.如果需要,我可以提供该代码.这是一个简短的版本:

INSERT INTO Schedule_Registrations(
  phone_number
)
VALUES(
  '#FORM.phone_number#'
)
Run Code Online (Sandbox Code Playgroud)

对此的任何想法将不胜感激.

Sco*_*ell 9

我选择处理此问题的方法是将原始数字存储在数据库中,然后在网页上显示我想要的内容.要规范化数字,请使用简单的正则表达式:

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

将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>
Run Code Online (Sandbox Code Playgroud)

面临的挑战是,在美国之外,没有标准化的数字格式化方法(我发现).如果您允许用户在电话号码字段中输入分机,也要小心.