以前也曾经转载过关于BASE64方面的文章,那时候仅仅介绍了原理啥的。这回我找来的内容是如何实现的。。。
通过google找来了javaeye上的文章,他写了转载自xxx,进入xxx的页面,他告诉我转载自yyy每个人在转载的时候都去掉了一些内容。基于这样的现状,我。。。
不想转载了,贴出几个地址,自己看吧。
javaeye:http://chmod777.javaeye.com/blog/320301
xxx:http://www.cnblogs.com/yiki/archive/2009/01/18/1377828.html
yyy:http://www.cnblogs.com/reonlyrun/archive/2006/12/29/640991.html
这些实现在PHPer看来都是学习的经验,但phper根本不需要进行这些,因为php自带了base64_encode,base64_decode函数。
我要说的是,如何将加密的后的字符串在URL里传递,众所周知,base64中有三个特殊字符:"/,+,=",其中,=是补位码,/和+的标准字符,但/和=在URL里有着特定的意义,如果放到URL里,可能会被当成其他功能进行处理 。
于是,写了一个小函数进行了转换:
function exchange ( $string , $reverse = false )
{
if ( $reverse === false ){
return str_replace( array("/","+","="), array(":","|",";"), $string );
}else{
return str_replace( array(":","|",";"), array("/","+","="), $string );
}
}
其实功能很简单,无非就是把这三个有特殊意义的字符转换成在URL里不被解析的三个字符,只要不和base64所规定的字符相关,也不是URL处理中的特殊字符,这三个字符你可以替换成你平时喜欢用的字符。。。
评论 (0)
暂无评论