0

PHP を使用して、電話番号 # が適切に形成されているかどうかを確認するにはどうすればよいですか?

数字だけを残して、すべての非数値データを単純に削除するのが最も簡単なようです。次に、10桁が存在するかどうかを確認します。

これは最善かつ最も簡単な方法ですか?

4

6 に答える 6

2

最高の?いいえ。このアプローチで見られる問題:

  • 一部の市外局番 (000-###-#### など) は無効です。http://en.wikipedia.org/wiki/List_of_NANP_area_codesを参照してください。
  • 一部の交換 - ###-555-#### など - は無効です。http://en.wikipedia.org/wiki/555_%28telephone_number%29を参照してください。
  • 番号の前に 1 を入力する人もいます (例: 1-###-###-####)。
  • 一部の人々は、###-###-#### x#### のように、内線番号でしか到達できません。
  • 一部の企業は、1-800-GO-FLOWERS のように桁数を増やしています。追加の数字は電話システムによって単純に無視されますが、ユーザーはすべてを入力できると期待する場合があります。
  • 国番号を割り引いても、国際電話番号は必ずしも 10 桁ではありません。

十分ですか?おそらく可能ですが、それはあなたとあなたのアプリ次第です.

于 2009-10-13T17:31:26.047 に答える
0

このようなデータの検証/フィルタリングに関する問題は、通常、この質問に対する答えになります。「どの程度厳密になりたいですか?」次に、一連の「機能」の質問に発展します

  • 国際番号を受け入れるつもりですか?
  • 拡張機能を受け入れますか?
  • さまざまな形式、つまり(111)222-3333と111.222.3333を許可しますか

ビジネスルールに応じて、これらの質問に対する回答は異なる場合があります。しかし、最も柔軟にするために、電話番号を取得するために3つのフィールドをお勧めします

  1. 国コード(オプション)
  2. 電話番号
  3. 拡張機能(オプション)

3つのフィールドはすべて、プログラムで制限/数値のみのフィルターにできます。次に、それらを組み合わせてから解析可能な形式に保存するか、各値を個別に保存できます。

于 2009-10-13T17:34:54.223 に答える
0

何かが「最善の」ことであるかどうかに答えることは、ほとんど不可能です(あなたがあなた自身の質問に答える人でない限り)。

あなたがそれを提案する方法、すべての非数字を取り除き、そして10桁があるかどうかをチェックすることは、次のような文字列に望ましくない振る舞いをもたらすかもしれません:

ジョージ・ワシントン(1732年2月22日– 99年12月14日)は、アメリカ独立戦争で大陸軍の指揮官を務め、アメリカ合衆国の初代大統領を務めました。

すべての非数字を2217321499削除すると、10 f桁の長さの文字列になりますが、文字列全体を有効な電話番号と見なす必要があるかどうかは非常に疑わしいためです。

于 2009-10-13T17:36:28.987 に答える
0

正規表現を使用できます:

$pattern_phone = "|^[0-9\+][0-9\s+\-]*$|i";
if(!preg_match($pattern_phone,$phone)){
    //Somethings wrong
}

正規表現をテストしていないため、100% 正しいとは限りません。

于 2009-10-13T17:30:23.717 に答える
0

削除後に 10 桁をチェックすると、構文はチェックされますが、有効性はチェックされません。そのためには、地域/国で利用可能な有効な数値を特定し、おそらくパターンに一致する正規表現を作成する必要があります。

于 2009-10-13T17:31:06.547 に答える
-2

必要なフォーマットは?これには正規表現を使用できます。

于 2009-10-13T17:31:19.747 に答える