2

少し混乱するので、少し助けを求めていました...ユーザーがメッセージを送受信できるWebサイトを運営していますが、受信トレイではメールと電話番号の両方を非表示にする必要があります。

例:これは、サンプルの電子メールがどのように見えるかです。

こんにちは、私の電話は+44 5555555で、メールアドレスはjack@jack.comです。

私はそれがこのようである必要があります:

こんにちは、私の電話は(電話が非表示)で、メールは(メールが非表示)です

何かアイデアはありますか?...本当に感謝しています!..

4

5 に答える 5

5
$x = 'Hi, my phone is +44 5555555 and email is jack@jack.com';
$x = preg_replace('/[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}/i','(phone hidden)',$x); // extract email
$x = preg_replace('/(?:(?:\+?1\s*(?:[.-]\s*)?)?(?:\(\s*([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9])\s*\)|([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9]))\s*(?:[.-]\s*)?)?([2-9]1[02-9]|[2-9][02-9]1|[2-9][02-9]{2})\s*(?:[.-]\s*)?([0-9]{4})(?:\s*(?:#|x\.?|ext\.?|extension)\s*(\d+))?/','(email hidden)',$x); // extract phonenumber
echo $x; // Hi, my phone is (phone hidden) and email is (email hidden)

ファットキャットへの電話番号の正規表現に対する称賛

于 2012-07-13T11:55:43.423 に答える
1

ユーザーがあらゆる種類のものを入力できるときに 100% の精度でこれを行おうとするのは不可能です。部分文字列が電話番号なのか、別の番号なのか、電子メール アドレスなのか、それとも有効なもの。

ただし、試してみたい場合は、おそらく正規表現を使用する必要があります。http://php.net/manual/en/function.preg-replace.phpを参照してください。

于 2012-07-13T11:55:08.170 に答える
0

私の理解が正しければ、ユーザーはお互いにメッセージを送信できますが、ユーザーが個人情報を含むメッセージを送信すると、その情報が見えすぎてしまうのではないかと心配しています。

したがって、メッセージのプレビューからこの情報を削除しようとしていると思います (ただし、メッセージを開いた場合はまだ利用可能ですか?)。

この場合、数字や電子メールのように見えるものをすべて削除する、非常にずさんな正規表現を使用できます。検閲されていないバージョンのメッセージが常に利用できるため、非個人情報を非表示にしても問題ありません。

私はこのようなものを使います(テストされていません):

# Take any string that contains an @ symbol and replace it with ...
# The @ symbol must be surrounded by at least one character on both sides
$message = preg_replace('/[^ ]+@[^ ]+/','...',$message); # for emails
# Take any string that contains only numbers, spaces and dashes, replace with ...
# Can optionally have a + before it.
$message = preg_replace('/\+?[0-9\- ]+/','...',$message); # for phone numbers

これは、メールや電話番号だけでなく、多くのものと一致します。また、思いもよらなかったメールや電話番号と一致しない場合もあります。これは、これらの種類の正規表現を記述する際の問題の 1 つです。

于 2012-07-13T12:20:58.383 に答える