php - 使用 PHP 正则表达式部分隐藏电子邮件地址

标签 php regex

<分区>

我发现了两个主题,乍一看似乎可以回答我的问题,但它们似乎只能让我部分找到解决方案。使用它们我已经到了我所在的地方。所以它不是重复的!

我想用星号替换电子邮件地址的名称部分和域部分中除第一个字符以外的所有字符:

例如

g******@g****.com or g******@g****.co.uk

代码:

$email2 = preg_replace('/(?<=.).(?=.*@)/', '*', $email);
$email3 = preg_replace('/(?<=@.)[a-zA-Z0-9-]*(?=(?:[.]|$))/', '*', $email2);

几乎就在那里,但给了我 g******@g*.com 而不是 g******@g*****.com

有人可以帮我处理正则表达式吗?

最佳答案

您可以使用:

$email = preg_replace('/(?:^|@).\K|\.[^@]*$(*SKIP)(*F)|.(?=.*?\.)/', '*', $email);

RegEx Demo

这会将 great@gmail.com 变成 g*****@g*****.com

myemail@gmail.co.uk 将变为 m*******@g*****.co.uk

test.test@gmail.comt*********@g*****.com

关于php - 使用 PHP 正则表达式部分隐藏电子邮件地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30233813/

相关文章:

php - 无法在 mysqli 中获取搜索结果

php - 统一不同格式的日期字符串

php - 在 php 网站上集成 IMAP

javascript - 为什么这个正则表达式的第二部分不匹配?

php - mysql 真的很简单的查询花了很长时间

php - 需要修改 javascript 的帮助(将 php 值插入其中)

c - 在 C 中使用 regex.h 执行 RE。匹配并计算字符串中的任何数字

javascript - ng-pattern 在 AngularJS 中不起作用

regex - 重复正则表达式模式

java - 可以处理java异常的正则表达式