PHP用其他东西替换两个符号之间的所有内容

时间:2014-09-17 02:42:42

标签: php regex

我试图用@

替换.***之间的电子邮件地址的域名

例如:

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

需要成为

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

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

谢谢

3 个答案:

答案 0 :(得分:4)

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

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

Live Demo

答案 1 :(得分:2)

<强> Live demo

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

<强>输出:

info@***.com

答案 2 :(得分:0)

您也可以使用positive lookahead

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

模式说明:

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