PHP常用字符串压缩解压,如何在PHP中压缩/解压缩长查询字符串?

小编典典

基本前提是非常困难的。在URL中传输任何值意味着您只能使用ASCII字符的子集。使用任何形式的压缩gzcompress都会减小字符串的大小,但会导致二进制斑点。但是,该二进制blob无法在URL中传输,因为它将产生无效字符。要使用ASCII子集传输该二进制Blob,您需要以某种方式对其进行编码,然后将其转换为ASCII字符。

因此,您需要将ASCII字符转换为其他字符,然后再转换为ASCII字符。

但是实际上,大多数时候,您开始使用的ASCII字符已经是最佳长度。这里是一个快速测试:

$str = 'Hello I am a very very very very long search string';

echo $str . "\n";

echo base64_encode(gzcompress($str, 9)) . "\n";

echo bin2hex(gzcompress($str, 9)) . "\n";

echo urlencode(gzcompress($str, 9)) . "\n";

Hello I am a very very very very long search string

eNrzSM3JyVfwVEjMVUhUKEstqkQncvLz0hWKUxOLkjMUikuKMvPSAc+AEoI=

78daf348cdc9c957f05448cc554854284b2daa442772f2f3d2158a53138b9233148a4b8a32f3d201cf801282

x%DA%F3H%CD%C9%C9W%F0TH%CCUHT%28K-%AAD%27r%F2%F3%D2%15%8AS%13%8B%923%14%8AK%8A2%F3%D2%01%CF%80%12%82

如您所见,原始字符串最短。在编码的压缩中,base64最短,因为它使用最大的字母表示二进制数据。它仍然比原始的更长。

对于某些非常特殊的字符组合以及一些非常特定的压缩算法(可以将其压缩为ASCII可表示的数据),有可能实现某种压缩,但这是理论上的。 更新:

实际上,这听起来太消极了。问题是您需要弄清楚压缩是否适合您的用例。不同的数据压缩方式不同,不同的编码算法工作方式也不同。同样,较长的琴弦可能会实现更好的压缩率。可以达到某种压缩效果的地方可能是一个不错的地方。您需要确定大部分时间是否处于最佳状态。

md5之类的东西不合适,因为md5是一个 hash ,这意味着它是不可逆的。您无法从中获取原始值。

恐怕您只能通过POST发送该参数,如果该参数在URL中不起作用。

2020-05-29

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值