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


PHP replace everything between two symbols with something else

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

例如:

$email1 = info@mytestdomain.com
$email2 = info@mytestdomain.net

需要成为

$email1 = info@***.com
$email2 = info@***.net 

我知道我可以使用PHP preg_replace函数,但我不确定在我的情况下需要使用什么regex。所以我的问题是,在我的情况下,我应该使用哪个regex来用***替换@.之间的所有内容?

感谢

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

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

实时演示

实时演示

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

输出:

info@***.com

您也可以使用正向前瞻。

$email1 = "info@mytestdomain.com";
echo preg_replace("/[^@]+(?='.)/","***",$email1);

模式解释:

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