PHP将两个符号之间的所有内容替换为其他内容

PHP将两个符号之间的所有内容替换为其他内容,php,regex,Php,Regex,我正在尝试将@和之间的电子邮件地址的域名替换为*** 例如: $email1 = info@mytestdomain.com $email2 = info@mytestdomain.net 需要成为 $email1 = info@***.com $email2 = info@***.net 我知道我可以使用PHPpreg_replace函数,但我不确定在我的情况下需要使用什么正则表达式。所以我的问题是,在我的例子中,我应该使用哪个正则表达式来替换@和之间的所有内容,使用*** 谢谢您可以使

我正在尝试将
@
之间的电子邮件地址的域名替换为
***

例如:

$email1 = info@mytestdomain.com
$email2 = info@mytestdomain.net
需要成为

$email1 = info@***.com
$email2 = info@***.net 
我知道我可以使用PHP
preg_replace
函数,但我不确定在我的情况下需要使用什么正则表达式。所以我的问题是,在我的例子中,我应该使用哪个正则表达式来替换
@
之间的所有内容,使用
***


谢谢

您可以使用这个基于断言的正则表达式

$eml = preg_replace('/@\K[^.]+/', '***', $eml);

您可以使用此基于断言的正则表达式

$eml = preg_replace('/@\K[^.]+/', '***', $eml);

$email1 = "info@mytestdomain.com";
echo preg_replace("/(.*@)([^\.]+)(\..*)/","$1***$3",$email1);
输出:

info@***.com

$email1 = "info@mytestdomain.com";
echo preg_replace("/(.*@)([^\.]+)(\..*)/","$1***$3",$email1);
输出:

info@***.com
你也可以用一个

图案说明:

info@***.com
[^@]+(?=\)
仅当字符后跟文字点时,才与任何字符匹配一次或多次。

也可以使用

图案说明:

info@***.com

[^@]+(?=\)
仅当字符后跟文字点时才匹配任何字符,但不匹配
@
的字符一次或多次。

@非常感谢,这样的电子邮件也会这样吗<代码>我的名字。prefix@domain.com?@user2028856我也对其进行了改进,请在我提供的演示链接上尝试provided@Thanks很多,这样的邮件也是这样吗<代码>我的名字。prefix@domain.com?@user2028856我也对其进行了改进,请在我提供的演示链接上尝试