0

次のようなパターンで電話番号を制限する必要があります。

0123456789, 
1111111111, 
2222222222, 
3333333333, 
4444444444, 
etc.

私はPHPでそれをやろうとしています。

これまでのところ、配列を作成し、それを検索してそのモバイル番号を制限することにしました。

同じことを行うより良い方法はありますか?

たぶん正規表現か、おそらくjavascriptです。

4

3 に答える 3

2

特定の電話番号をブロックする必要がある場合は、次のようにします。

$numberToTest = [...]; // this is your user input number to test

$notAllowed = array(
  '0123456789',
  '1111111111',
  '2222222222',
  // and so on
);

if(in_array($numberToTest, $notAllowed)) {
  // NOT VALID
}
else {
  // VALID
}

1111111111、2222222222 などのすべての数字に一致させるには、次のようにします。

if(preg_match('/^(\d)\1{9}$/', $numberToTest)) {
  // NOT VALID
}
else {
  // VALID
}
于 2013-04-24T06:47:31.177 に答える
2

自分自身に言及したように、チェックするために長い配列の数字を更新し続けたくない場合は、基本的にパターン検出/パターン認識を実行したいと考えています。

これは、以前の知識に応じて、些細なことから非常に複雑なものまであります。

ここで小さなスタートを見つけることができます...しかし、このテーマに関する非常に分厚い本がたくさんあります;)

http://en.wikipedia.org/wiki/Pattern_recognition

したがって、「最も簡単な」方法は、おそらく配列ルックアップを使用することです。欠点は、ブラックリストに登録するすべての番号を事前に知っておく必要があることです。中間の方法は、配列に実際の数値を含める代わりに、無効な形式の正規表現の配列をチェックすることです。

したがって、次のようなものをカバーする正規表現を持つことができます

  • 数字を短くする
  • 数字が長い
  • 同じ数字だけの数字

利用可能なシステムと地理的な場所によっては、既知の数値データベースに対してある種のルックアップを実際に実行できる場合があります。しかし、それはリストにない番号の誤検知につながる可能性があります.

グローバルで動的な作業システムの場合、ルックアップ配列を維持し、データベースに対してルックアップを実行することは、両方とも処理が非常に難しくなることが判明する可能性があります。これは、サポートを継続して実行する既知のデータ ソースの数が処理しきれないほど大きくなる可能性があるためです。

于 2013-04-24T06:59:07.463 に答える
0

正規表現を使用した Javascript。番号が制限リストにある場合、isRestricted は true に設定されます。

var number = "0123456789";
var isRestricted = number.match( /0123456789|1111111111|2222222222|3333333333|4444444444/g ) != null;

正規表現は、 preg_matchを使用して PHP とほぼ同じように機能すると確信しています。

于 2013-04-24T07:13:24.980 に答える