2

ユーザーが自分自身に関する情報を入力できるテキスト領域があります。

ユーザーが電話番号を入力したかどうかを検出する必要があります。またはそのテキスト領域の電子メールアドレス。

固定パターンを正規表現と一致させることができることは知っていますが、次のようなさまざまな形式を処理する方法は次のとおりです。

9 7 8 5 8 7 

9, 7, 8, 5, 8, 7 

9.7.8.5.8.7 

Or any 6 or more consecutive number sepereated with \, -, etc

助けてください。

4

3 に答える 3

1

すべての電話番号と電子メールアドレスを文字列で見つけることができるとは思いません。非常に複雑になる可能性があります。無効な情報を持っている疑いがあるために他のユーザーにプロファイルを保存させない場合、パターンが見つかるまで、正規表現で処理できないほど長く試行する可能性があります。誰かが終わるかもしれません:

My name is Peter at googleD0Tcom'on.

一方、詐欺ではないものを誤って検出すると、人々を怒らせることになります。JanHančičがコメントで提案したものを使用して、数字以外のすべての文字を削除するとします(これは悪いアプローチではありません)。

I'm 21 years old. In 2012 I already had like 45k reputation on Stackoverflow.

これは21201245になり、電話番号の一部になる可能性があります。

疑わしいと思われる新しいプロファイルと更新されたプロファイルをフィルタリングし、手動で検証することをお勧めします。偽装された電子メールまたは電話番号が含まれているために有効なエントリではない場合は、それをブロックし、プロファイルを更新するためのメッセージを含む電子メールをユーザーに送信します。

私は次のように文字列をチェックします:

  • @、、、、 (atまたはユーザーがよく使用するその他のTLD)が[at]含まdotれていますか.com
  • 数字以外のすべての文字を取り除き、結果の数値を確認します
  • Google、GMX、Yahoo、Apple(ME、iCloud)などの巨大なメール会社の名前を検索します。

PHPを使用して電子メールと電話番号を見つける方法に関するいくつかの質問と回答を次に示します。

于 2013-02-26T10:28:52.703 に答える
0

次を使用できます。

\d([,-. ] *\d){5}

, . -スペース文字を許可します。より多くの区切り文字を含める場合は、それらを内部に追加するだけです。[...]

于 2013-02-26T09:08:44.760 に答える
0

これを試して:

$number    = '12.3555';

if(preg_match('/[\/0-9,-\.\s\\\]{6,}/',$number) && count(array_filter(str_split($number),'is_numeric')) >= 6){
  echo "phone number exists";
}
于 2013-02-26T09:11:58.280 に答える