如何解压缩$ _POST数组?

时间:2016-06-14 19:52:25

标签: php arrays post gzip httpservice

我有一个$ _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

多数人。

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

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

2 个答案:

答案 0 :(得分:1)

你需要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...

答案 1 :(得分:-3)

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

echo yourArray['yourIndex'];