2012-12-29 133 views
4

我需要一种方式在PHP编码电子邮件地址只使用a-zA-Z0-9所以基本上编码没有任何特殊字符,但然后能够解码它回到原来的。PHP编码电子邮件地址

例子:

[email protected] => ENCODE => n6bvJjdh7w6QbdVB373483ydbKus7Qx 
n6bvJjdh7w6QbdVB373483ydbKus7Qx => DECODE => [email protected] 

这甚至可能吗?

+0

看看这只是为了好玩:http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html –

+0

为什么你需要这样做? rawurlencode()不工作吗? –

+0

'rawurlencode()'和'urlencode()'不起作用,因为它们不会逃避''。我不能有句号。 – Justin

回答

7

你可以做一个网络安全base64编码:

// encode 
$email_encoded = rtrim(strtr(base64_encode($email), '+/', '-_'), '='); 

// decode 
$email_decoded = base64_decode(strtr($email_encoded, '-_', '+/')); 

它转换+/ from base64字母表中的更无害-_。编码步骤还会在需要时删除尾随的=字符。

+0

用'+ /'和'-_'做的strstr究竟是做什么的?谢谢。 – Justin

+0

@Justin它将每个'+'转换成'-',每个'/'转换为'_'。 –

+0

哪里有过+和/从base64编码返回虽然?我认为它只返回'a-zA-Z0-9 ='。谢谢。 – Justin

相关问题