背景是我想编码电子邮件从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
替换#
?
这个问题对于像正则表达式或其他更好的解决方案是开放的。
(我将自行承担风险)
答案 0 :(得分:1)
您可以使用像
这样的正则表达式^(.*)@(.*)\.(.*)$
并替换为$1#$2@$3
。
请参阅regex demo。
详细:
^
- 字符串开头(.*)
- 第1组捕获除换行符之外的任何0 +字符,直到最后... @
- at at sign (.*)
- 第2组捕获除了换行符之外的任何0 +字符... \.
- 字面点(.*)
- 第3组捕获剩下的部分$
- 字符串结束。