0

私のサイトの 1 つで、あまりにも多くの新規ユーザーがルールを読まず、電話番号を公開しているという問題がありました。これはルールに違反しています。

これを終わらせるために、投稿を公開する前に電話番号が送信されているかどうかを確認したいと思います。電話番号が文字列に含まれているかどうかを判断するための最良かつ最も効率的な方法は何ですか?

これについての私の思考プロセスは次のとおりです。

1) 電話番号は 10 桁以上です。

2) ユーザーは、電話番号内に 、 、 、およびスペースを(使用)することがあります。-

電話番号が投稿されているかどうかを確認するには、投稿の文字列を取得し、2)上記のすべての文字を削除してから、連続する 10 桁以上の文字列を検索する必要があるようです。

もちろん、これは回避できる可能性がありますが、大多数の新規ユーザーはルールを回避しようとしているわけではなく、ルールを完全に無視して電話番号を投稿しているだけであり、私はそれを止める方法が他にわかりません。サイトのモデレートに多くの時間を無駄にする必要はありません。

PHPで上記を行うにはどうすればよいですか?それとももっと良い方法がありますか?

編集: 明確にするために、私のサイトには、ユーザーが問題のある投稿を報告するための「投稿を報告する」ボタンが既にあります。これは、私がサイトをモデレートする方法ですが、モデレーション時間の 90% は、電話番号を編集して警告するために費やされます。ユーザーはそれをしないでください。問題が発生する前にそれをキャッチし、ルールについてユーザーに警告することで、いわば問題を「先取り」したいと考えています。確かに、ユーザーはそれを回避できますが、そうしないように明確に警告されているため、禁止します。禁止されるためだけにルールを故意に無視している多くのユーザーを理解することはできません. したがって、私のソリューションは、欠点を最小限に抑えて、多くの時間を節約できます。私のサイトでは、電話番号ではない 10 桁以上の連続した数字が入力されているケースがあまり見当たらないので、誤検知の心配はありません。

4

3 に答える 3

2

一番良いのは何ですか

投稿を手動で確認します (有効なオプションではないと思いますが、それが最善です)。

最も効率的な方法

やらないでください。

もちろん、これは回避できますが、

違う。これ、新規ユーザーと現在のユーザーの両方によって回避されます。

申し訳ありませんが、これは実際にはあなたの質問に対する答えではありませんが、それが唯一の正しい答えです。


ただし、投稿に正規表現パターンを実行して、電話番号が含まれているかどうかを確認することもできますが、これには 2 つの欠点があります。

  1. ユーザーはこれを回避し、すべてをトラップすることはできません
  2. ユーザーにとって非常に迷惑な誤検知が発生する可能性があります。

本当にこのルートに行きたい場合は、電話番号が含まれる大量の投稿を取得し、その中にある電話番号のすべての可能な形式のリストを作成することをお勧めします。そのリストを取得したら、このリストに基づいて正規表現パターンを作成できます。

于 2012-08-19T11:37:49.123 に答える
1

2) で言及したすべての文字を削除してから、次のような正規表現を使用できます: https://stackoverflow.com/a/3764902/1130734のような数字を見つける

$string = preg_replace('/[() -]+/','',$string);
$found = preg_match("/\+?[0-9][0-9()-\s+]{4,20}[0-9]/",$string);
if ($found==1){
    //tell user they may be breaking the rules and face a ban
}

正規表現を変更して、ゼロまたはプラス記号で始まる数字のみに一致するようにすることもできます (ただし、これが正しいかどうかはわかりません...)/[0\+][0-9()-\s+]{4,20}[0-9]/

于 2012-08-19T11:49:27.727 に答える
0

正規表現を使用して、一般的な形式の電話番号を検索することをお勧めします。これは、経験を通じて常に見直し、改善することができます

しかし、人間は狡猾な生き物なので絶対になくしてはいけません。

編集

もちろんPHPも使えます。

サイトへの投稿を行うコードに検証を追加するだけです。つまり、投稿がルールに従っていることを確認するためのチェックを実行します。

于 2012-08-19T11:43:21.630 に答える