您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何在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是一个 ,这意味着它是不可逆的。您无法从中获取原始值。

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

php 2022/1/1 18:15:39 有495人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶