我希望关于这一点帮助,因为它混淆我有点...我运行一个网站,允许用户发送消息来回,但在收件箱中我需要隐藏两电子邮件和电话号码。
示例:这是一个示例电子邮件会是什么样子。
嗨,我的电话是+44 5555555和电子邮件是jack@jack.com
我需要的是这样的:
嗨,我的电话是(电话隐藏)和电子邮件(邮件隐藏)
你有什么想法吗?......我真的很感激!..
我希望关于这一点帮助,因为它混淆我有点...我运行一个网站,允许用户发送消息来回,但在收件箱中我需要隐藏两电子邮件和电话号码。
示例:这是一个示例电子邮件会是什么样子。
嗨,我的电话是+44 5555555和电子邮件是jack@jack.com
我需要的是这样的:
嗨,我的电话是(电话隐藏)和电子邮件(邮件隐藏)
你有什么想法吗?......我真的很感激!..
$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)
工藤的为PHONENUMBER正则表达式fatcat
试图用100%的准确率要做到这一点时,用户可以输入各种中是不可能的事情 - 你真的不能肯定地说,如果一个子是这可能是一个电话号码或只是另一个号码或电子邮件地址,或只是一些有效的一个。
但是,如果你想尝试,你应该使用正则表达式。 见http://php.net/manual/en/function.preg-replace.php
如果我理解正确的话,用户可以将消息发送到对方和你担心,如果他们在其发送的个人信息的消息这些信息可能是太明显。
我想,你因此试图从邮件的预览删除此信息(但仍然有它可用,如果你打开该邮件?)。
如果是这种情况,那么你可以有一个很草率的正则表达式删除任何看起来甚至像一个号码或电子邮件一点点。 如果隐藏非个人信息,因为信息的不审查的版本始终可用没关系。
我会去与像这样(未经):
# 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
这将满足很多事情,不仅仅是电子邮件和电话号码。 它也可能不匹配的电子邮件和电话号码,我没有想到的,这是与编写正则表达式对这些事情的问题之一。