PHP-php 如何对一个url的参数串进行压缩和解压缩

PHP-php 如何对一个url的参数串进行压缩和解压缩

偏爱自由 发布于 2016-10-31 字数 282 浏览 1201 回复 4

对GET方式表单提交或其他url链接的方式的进行参数传递的时候,如果参数内容很长的话,这个url就会很长。比如:

http://www.domain.com/index.php?$querystring

$querystring = "content=asafafafaasfdaafdasfadsasdfafasdfasasasfdafasdasa";

如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

扫码加入群聊

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

泛泛之交 2017-08-20 4 楼

直接用gzcompress来压缩一下吧,用gzuncompress,压缩效率还是挺高的:

$querystring = "content=asafafafaasfdaafdasfadsasdfafasdfasasasfdafasdasajasdlfkjsdklfjasdlkfjjjjjsaldkfjlaskdjfasafafafaasfdaafdasfadsasdfafasdfasasasfdafasdasajasdlfkjsdklfjasdlkfjjjjjsaldkfjlaskdjfasafafafaasfdaafdasfadsasdfafasdfasasasfdafasdasajasdlfkjsdklfjasdlkfjjjjjsaldkfjlaskdjfasafafafaasfdaafdasfadsasdfafasdfasasasfdafasdasajasdlfkjsdklfjasdlkfjjjjjsaldkfjlaskdjfasafafafaasfdaafdasfadsasdfafasdfasasasfdafasdasajasdlfkjsdklfjasdlkfjjjjjsaldkfjlaskdjfasafafafaasfdaafdasfadsasdfafasdfasasasfdafasdasajasdlfkjsdklfjasdlkfjjjjjsaldkfjlaskdjfasafafafaasfdaafdasfadsasdfafasdfasasasfdafasdasajasdlfkjsdklfjasdlkfjjjjjsaldkfjlaskdjfasafafafaasfdaafdasfadsasdfafasdfasasasfdafasdasajasdlfkjsdklfjasdlkfjjjjjsaldkfjlaskdjfasafafafaasfdaafdasfadsasdfafasdfasasasfdafasdasajasdlfkjsdklfjasdlkfjjjjjsaldkfjlaskdjf";
//var_dump(strlen($querystring));//800
var_dump(strlen(gzcompress($querystring,9)));//77

试了一下长度800的字符串,压缩以后只有77

瑾兮 2017-07-21 3 楼

可以使用gzdeflate来压缩,gzinflate()解压。

 $str = "content=asafafafaasfdaafdasfadsasdfafasdfasasasfdafasdasa";
$gzdeflate = gzdeflate($str,9);
echo "gzdeflate:".strlen($gzdeflate);

泛泛之交 2017-04-26 2 楼

如果参数名和值全部是已知的,那么做一个映射表就可以了。
如果参数的值涉及用户提交的内容,对于过长的内容,最好使用POST,并开启Gzip压缩。

关于URL的长度:
1,普通用户很少通过修改url来实现跳转
2,太短的参数名称就很难理解含义,比如content如果缩短成c,你知道这代表什么意思么?
3,如果说为了便于保存和分享,那么可以考虑short url的处理方式
4,url的长度对性能的影响微乎其微,除非是超长文本,那就是程序设计的问题了
5,如果说刻意追求极短的url,还要进行压缩和解压缩步骤,真的有点画蛇添足了

泛泛之交 2017-03-15 1 楼

可以使用URL的短地址压缩技术实现,原理如下:
1.将长网址md5生成32位签名串,分为4段,每段8个字节;
2.对这四段循环处理,取8个字节,将他看成16进制串与0x3fffffff(30位1)与操作,即超过30位的忽略处理;
3.这30位分成6段,每5位的数字作为字母表的索引取得特定字符,依次进行获得6位字符串;
4.总的md5串可以获得4个6位串;取里面的任意一个就可作为这个长url的短url地址;

看看这个资料:参考资料