背景是我想要编码邮件从user@domain.com
到user#domain@com
$email = 'user@domain.com';
$email_encode = str_replace( '@' , '#' , $email ); // user#domain.com
$email_encode = str_replace( '.' , '@' , $email_encode ); // user#domain@com
应该这样做,对吗?但如果user
是类似hello.world
的
它将得到hello@world#domain@com
,所以这是错误的。
应该是 hello.world#domain@com
所以问题是:
如果dot
在#
之后,如何替换dot
?
这个问题是开放的另一个更好的解决方案,如正则表达式或其他。
(我将自行承担风险)
您可以使用像
这样的正则表达式^(.*)@(.*)'.(.*)$
并替换为$1#$2@$3
参见regex演示。
细节:
-
^
-字符串 起始 -
(.*)
-组1捕获除换行符以外的任何0+字符,直到最后一个… -
@
- an at标志 -
(.*)
-组2捕获除换行符以外的任何0+字符,直到最后一个… -
'.
-文字点 -
(.*)
-组3捕获行 的其余部分 -
$
-字符串结束