2014-10-04 20 views
0

Im base 64編碼用作URL參數的字符串。基地64回到原來的字符串?

我知道基地64可以使用的字符,如「/」不與網址,以便發揮出色:

$encoded = base64_encode($value); 
return str_replace(array('+', '=', '/'), array('-', '_', '~'), $encoded); 

我只是在想,我怎麼能得到base 64編碼字符串(與更換字符)回到它的原始形式?

+0

嘗試將其替換並解碼。 – sectus 2014-10-04 14:03:28

+0

只需以相反的順序執行每個轉換步驟。 – Gumbo 2014-10-04 14:03:44

+1

爲什麼不只是URL en- /解碼? – Biffen 2014-10-04 14:03:45

回答

1

是的,這將完全工作。實際上你可以通常完全刪除等於(=):)

要做到這一點,只要做相反的str_replace()函數與前兩個參數顛倒。

+0

這個轉變是不可逆轉的。 – hek2mgl 2014-10-04 14:08:33

+0

@ hek2mgl:你說的是什麼? base64編碼只使用字母(大寫和小寫),數字和'+'和'/'。總計26 + 26 + 10 + 2 = 64個字符。等號是填充,大多數解碼器可以沒有它。 – Evert 2014-10-04 14:10:33

+0

嘿!你是對的(當OP刪除'='轉換時,如你所建議的那樣)+1 .. Srry。錯過了! – hek2mgl 2014-10-04 14:14:00

1

正如比芬提到,看看urlencodeurldecode

如果你真的想這樣做,你需要首先你的價值恢復到原來的一個,然後解碼

$value = str_replace(array('-', '_', '~'), array('+', '=', '/'), $value); 
return base64_decode($value); 
+0

謝謝,URL編碼的優點是什麼? – panthro 2014-10-04 14:11:55

+0

少編碼/代碼,更易讀 – 2014-10-04 14:12:38

相關問題