2010-02-05 22 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

相关问题