2

フォームに入力する電話番号の入力を、たとえば (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>

これは、他のすべてのデータとともに、cfquery INSERT INTO コマンドを使用してデータベースに入力されます。必要に応じてそのコードを提供できます。要約版は次のとおりです。

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

これに関する任意の考えをいただければ幸いです。

4

2 に答える 2

11

この問題に対処するために私が選択した方法は、生の数値をデータベースに保存し、Web ページで希望どおりに表示することです。数値を正規化するには、単純な正規表現を使用します。

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

cleanPhoneNumber をデータベースに保存し、単純な format 関数を使用して表示します。

<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>

問題は、米国以外では数値をフォーマットする標準化された方法がないことです (私が見つけたものです)。また、ユーザーが電話番号フィールドに内線番号を入力できるようにする場合も注意してください。

于 2011-12-24T04:40:24.927 に答える