PHP кодирует адрес электронной почты


Мне нужен способ в PHP кодировать адрес электронной почты только с помощью a-zA-Z0-9, поэтому в основном кодируется без каких-либо специальных символов, но затем может декодировать его обратно в оригинал.

Пример:

 john+doe@mydomain.com => ENCODE => n6bvJjdh7w6QbdVB373483ydbKus7Qx
 n6bvJjdh7w6QbdVB373483ydbKus7Qx => DECODE => john+doe@mydomain.com

Возможно ли это вообще?

2 4

2 ответа:

Вы можете сделать web safe base64 кодировать:

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

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

Он преобразует + и / из алфавита base64 в более безвредные - и _. Шаг кодирования также удаляет заключительные символы =, когда это необходимо.

Если вы допускаете знак равенства, вы можете использовать base64_encode() и еще base64_decode()

Еще один вариант:bin2hex() и еще hex2bin()