我找到了两个主题,这些主题最初似乎可以回答我的问题,但它们似乎只能让我找到解决方案的一部分。使用它们我已经到了我的位置。所以这不是重复的!
我想用星号替换电子邮件地址的名称部分和域部分中除第一个字符外的所有字符:
例如
g ****** @ g ****。com或g ****** @ g ****。co.uk
码
$email2 = preg_replace('/(?<=.).(?=.*@)/', '*', $email);
$email3 = preg_replace('/(?<=@.)[a-zA-Z0-9-]*(?=(?:[.]|$))/', '*', $email2);
几乎就在那里但给了我 g ****** @ g * .com 而不是 g ****** @ g *****。com
有人可以帮我解决正则表达式吗?
答案 0 :(得分:4)
您可以使用:
$email = preg_replace('/(?:^|@).\K|\.[^@]*$(*SKIP)(*F)|.(?=.*?\.)/', '*', $email);
这会将great@gmail.com
变为g*****@g*****.com
和
myemail@gmail.co.uk
将成为m*******@g*****.co.uk
和test.test@gmail.com
加入t*********@g*****.com
答案 1 :(得分:0)