如何解压缩 $_POST 数组?

How do I decompress a $_POST array?

我有一个数组格式的$_POST,当$_POST超过256B时,因为发送的内容有限制,所以会自动用gzip压缩。我无法阻止它,但我能做的是解压缩它(使用 PHP)并仍然将它作为一个数组。我认为。 gzuncompress 仅适用于字符串。 我可以用这个:(把它变成一个解压缩的字符串)

$post_body = file_get_contents('php://input');
$post_body = (ord(substr($post_body,0,1)) == 31 ? gzinflate(substr($post_body,10,-8)) : $post_body);

但那是一个字符串,我一辈子都写不出来 PHP,我得到了帮助来写我目前得到的东西,但帮助者在这里遇到了困难。

假设 $post_body 是:

userid=&name=&level=&exp=&key1=&key2=&key3=&key4=&key5=&key6=&key7=&key8=&key9=&key10=&key11=&key12=

我如何将其重新转换为数组?比如,我以前是怎么做的:

$userid = $_POST["userid"];
$name = $_POST["name"];

等等。我有点不知道如何将 $_POST 视为数组。该方法自动将其从字符串转换为数组。但是我需要在 PHP 中将它作为一个数组来处理。虽然我没有看到数组。我可以回应它,但它显示为

Array

就这些了。

非常感谢您的帮助,我正在用它存储数据,我不得不取下我的 'game' 来处理这个问题。到目前为止 $_POST 低于 256B,所以我没有遇到问题。 :/

编辑:感谢@Marcin Orlowski 告诉我 b = bit 和 B = bytes

您只需调用数组和所需的索引:

echo yourArray['yourIndex'];

你需要parse_str()这样的:

$post_body = file_get_contents('php://input');
$post_body = (ord(substr($post_body,0,1)) == 31 ? gzinflate(substr($post_body,10,-8)) : $post_body);

parse_str($post_body);

// Now just call $userid or $name, etc...