php中的gzcompress和gzuncompress

php中的gzcompress和gzuncompress,php,Php,我对php中传递的值使用gzcompress(),例如: $value=gzcompress("hello"); myphp.php?q=$value; 然后我在myphp.php中将其解压缩为: $q=$_GET["q"]; gzuncompress($q); 但我得到这个警告: gzuncompress(): data error 为什么不起作用?您需要对压缩数据进行urlencode()。您不能简单地将看起来基本上是随机的二进制垃圾放入这样的url中。压缩数据中至少有一个字符是U

我对php中传递的值使用
gzcompress()
,例如:

$value=gzcompress("hello");

myphp.php?q=$value;
然后我在
myphp.php
中将其解压缩为:

$q=$_GET["q"];
gzuncompress($q);
但我得到这个警告:

gzuncompress(): data error 
为什么不起作用?

您需要对压缩数据进行urlencode()。您不能简单地将看起来基本上是随机的二进制垃圾放入这样的url中。压缩数据中至少有一个字符是URL元字符的可能性很高,例如,
+
,在解码时会被损坏为
'
(空格)字符。所以

$value = urlencode(gzcompress('hello'));
PHP将在填充$\u GET时自动为您执行url解码,因此解码端将非常简单

$q = gzuncompress($_GET['q'])

和以前一样。

谢谢你的回答。它起作用了。但是电子邮件上的链接不起作用,当被点击时,什么也没发生。请你看一下好吗?