2010-02-05 57 views
3

如何安全地將PHP字符串編碼爲字母數字只有字符串? 例如「Hey123 & 5」可能會變成「ed9e0333」或者可能是更好看的東西 這不是關於剝離字符,它關於編碼。如何安全地將PHP字符串編碼爲字母數字?

的目標是使任何字符串此編碼適合CSS ID字符串(alnum), 之後,但後來我需要回去解碼,並得到字符串。

+1

這難道不是打算讓調試HTML/CSS不必要的困難,如果你的元素ID不是人類可讀字符串? – Paolo 2010-02-05 11:55:29

+0

這是一個ajax樹,其中id用於父子關係 – AlexA 2010-02-05 13:01:50

回答

4

bin2hex似乎符合這個要求(雖然不一樣緊湊一些其他的編碼)。另外請注意,CSS ID不能以數字開頭,因此在確定最終ID之前,需確保您需要爲bin2hex結果添加前綴。

對於反向(解碼),有沒有這樣的東西hex2bin,但有人對PHP文件的網站提出這個(未經測試):

$bin_str = pack("H*" , $hex_str); 
+1

我測試了'包'功能,並且像魅力一樣工作!我甚至使用bin2hex/pack對來對「mcrypt_encrypt」輸出進行編碼和解碼。每次都完美無瑕地工作。 – ThoriumBR 2013-01-10 00:04:27

+0

hex2bin()可以從PHP 5.4.0獲得 – 2013-06-27 07:59:57

-1

這個線程是死了很長一段時間,但我一直在尋找爲了解決這個問題並找到了這個線索,有人可能會發現這個簡單的答案很有用。

我的解決辦法是:

str_replace('=', '_', base64_encode($data)); 
+1

base64也可以包含'+'和'/',所以這個解決方案不是100%正確的 – vim 2016-06-30 11:42:55

+0

並且包含'=' – Wraith 2018-02-22 12:12:27

相關問題