php压缩长字符串,如何压缩/解压缩PHP中的长查询字符串?

基本前提是非常困难的。传输URL中的任何值意味着您被限制为一个ASCII字符的子集。使用像gzcompress这样的任何类型的压缩会减小字符串的大小,但会导致二进制blob。该二进制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是一个哈希,这意味着它是不可逆的。您无法从中获取原始值。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值