3

PerlでWeb開発をしています。すべての国で電話番号の検証を行う必要があります。次のことができるオープンソースの Perl モジュールはありますか?

例: 国 = マレーシア、ユーザー入力電話番号 = +60127008007 の場合、検証後、これはマレーシアで有効な携帯電話番号を返します。ここで: ローカル マレーシアでは、0127008007 に直接電話します。「+6」は国際コードです。

ユーザー入力の電話番号 = +600127008007 の場合、無効な電話番号として返されます。マレーシアではローカルなので、00127008007 のような番号はありません。

CPANまたはその他でこれを行うことができるフリーモジュールはありますか?

4

7 に答える 7

9

Number::Phone::NANP ( lNumber::Phone::NANP ) を見てください。カバーされていない国の新しいサブクラスを追加すると思います。

于 2009-03-16T13:31:45.627 に答える
8

検証は、データを入力する人よりも多くのことを知っていることを前提としていますが、この場合はそうではありません。私がカナダで長期契約を結んでいるアメリカ人だとしましょう。勤務先の会社がローミング料金を負担しているため、携帯電話を保管しています。あなたのサイトにアクセスしてアメリカの携帯電話番号とカナダの住所を入力すると、検証スクリプトは無効であると主張しますが、そうではありません。これは、顧客の混乱と怒りにつながります。

有効な電話番号 (またはメール アドレス) があなたのビジネスにとって絶対的な要件である場合は、その番号 (またはメール アドレス) の担当者に電話 (またはメール) し、提供したコードを入力してもらう必要があります。番号を自動的に呼び出し、受信者にメッセージを提供するように設計されたハードウェア/ソフトウェアがあります。Festivalのようなテキスト読み上げソフトウェアを使用して、電話で特別なキーを再生し、それを Web サイトに入力して、その電話にアクセスできることを確認することができます。ただし、使い捨ての携帯電話を購入したり、使い捨てのメールアドレスを作成したりできるため、これでも確実ではありません。

于 2009-03-16T14:10:55.550 に答える
3

検証のポイントは、入力中に特定の形式を使用することを強制する入力エラーをキャッチして、ユーザーを支援することです。

検証がユーザーにとって役に立たなくなるポイントがあります。通常、これは検証ルールの例外が多すぎてプログラマーが処理できないポイントでもあります。

なぜ認証済みの電話番号が必要なのですか? ユーザーが同じフィールドに 2 つの数字を入力しようとして挫折してあきらめたりしないでしょうか? ユーザーが「555-5555 (スティーブに尋ねる)」や「555-5555 (内線 123)」などの完全に有効な入力を入力しないと確信していますか? ユーザーがそのフィールドに入力する必要がある可能性があるすべての入力を予測するのに十分なほど賢いですか?

ユーザーの裏をかこうとしないでください。彼を助けて。:)

于 2009-03-17T08:32:49.193 に答える
1

各国の有効な市外局番と番号の長さの最新リストを維持することは事実上不可能です。

これを確認することをお勧めします:

  1. 国際電話番号(1~3桁)
  2. 市外局番 (通常は 3 桁ですが、1 ~ 5 桁の範囲)
  3. 電話番号 (通常は 6 ~ 8 桁ですが、範囲は 4 ~ 13 桁です)

つまり、オーストリアに特別な感謝を込めて、6 桁から 21 桁です。=)

そうは言っても、電話番号に電話しない限り、その電話番号が有効であることを確認することはできません. 検証を迂回する作業を行う人がいる場合 (たとえば、有効な公開番号を入力するなど)、「これは本当に必要なのか?」と自問する必要があります。

于 2009-03-16T13:29:25.353 に答える
0

Chasを拡張します。とDomchiのポイント:電話番号を検証する理由は2つあります。

  1. ユーザーが自分の番号を正しく入力できるようにするため(多くの場合、ユーザーが自分の番号を取得したい場合)
  2. ユーザーが有効な番号を入力せずに続行できないようにするため(多くの場合、ユーザーがあなたに番号を与えたくない場合)

あなたのケースがケース#1の場合、フリンジケースの正しい入力を妨げてユーザーを苛立たせたくないので、簡単な検証だけで十分です。単に、ユーザーが番号を誤って入力するのを防ぎたいだけです。

ケース#2の場合、検証を行っても、ユーザーが自分のものではない有効な番号を入力することを妨げることはありません。これを実際に行うには、検証コードを使用して自動コールバックを実行する必要があります。この場合、検証コードを取得するために正しい番号を提供する必要があるため、ケース#1の方が多くなります。ただし、これははるかに多くの作業になります。

結局、あなたは本当にケース#1をカバーする必要があるだけで、ユーザーが正しい番号を入力するのを手伝ってください。電話番号の検証だけで、潜在的なユーザーを苛立たせないでください。

于 2011-02-21T21:11:45.097 に答える
0

誰かが libphonenumber を Perl に移植しようとしていましたが、まだ実現していません。

JavaScript への完全な移植が既に行われています。

これまでのところ、Ruby、PHP、および Python への移植は不完全です。C++ への移植は数か月以内に予定されています。

http://code.google.com/p/libphonenumber/に注目してください。

于 2011-02-21T19:30:35.693 に答える
-2

私はPerlを知りませんが、それは正規表現を使用するのに最適なケースだと思います.

とにかく、国ごとに 1 つ必要です。明らかに、これには世界のどの国も含めることはできませんが、ここで電話パターンを見つけることができます。

于 2009-03-16T13:31:13.290 に答える