如何使用 PHP 序列化数组(数组到查询字符串)
Posted
技术标签:
【中文标题】如何使用 PHP 序列化数组(数组到查询字符串)【英文标题】:How to serialize an array (array to query string) using PHP 【发布时间】:2014-02-05 23:24:29 【问题描述】:我有一个来自 $_POST 的数据数组,我想通过 curl 将它们发送到另一个页面。
curl_setopt($s,CURLOPT_POST,true);
curl_setopt($s,CURLOPT_POSTFIELDS,$this->_postFields);
$this->_postFields
必须是像a=2&b=t
这样的字符串,对吗?
因此,如果我想将带有 curl 的数据数组发送到另一个页面,我必须将数组转为查询字符串吗?
我应该如何使用 php?
♦我尝试了serialize()
和unserialize()
,但它们的格式与查询字符串不同,对吧?
所以我该怎么做? (我需要像 jQuery 中的 .serialize()
这样的东西,它适用于数组而不是 FORM)
♦ 并且目标路径不在我的控制之下,并且目标中的 $_POST 应该是 $_POST 而不是它的 base64 编码,所以我不能使用这样的代码。
$array = array(1,2,3);
$encoded = json_encode($array);
$decoded = json_decode($encoded);
print_r($decoded);
有什么想法吗?
提前致谢。
【问题讨论】:
如果问题不清楚,或者即使我应该删除问题,请告诉我。而不是仅仅输入-1。再次感谢。 对于 PHP 解决方案,http_build_query()
可能会有所帮助:PHP Function To Build Query String From Array
@rafaelsoufraz - 谢谢,但目标路径不在我的控制之下,目标中的 $_POST 应该是 $_POST 而不是它的 base64 编码,所以我不能使用这样的代码。` $array = 数组(1,2,3); $encoded = json_encode($array); $decoded = json_decode($encoded); print_r($decoded);`
【参考方案1】:
你可以使用http_build_query:
curl_setopt($s, CURLOPT_POSTFIELDS, http_build_query($this->_postFields));
通知
看起来很漂亮,但是使用这种方法要小心 url 编码。看下一个:
$_POST["some value"]='value1'; // " " between
$_POST["next value"]='value2'; // " " between
$url = http_build_query($_POST);
echo $url;
// OUTPUT
some+value=value1&next+value=value2
当然,在发送这个 $url 之后,我们不会从 $_POST 中得到预期的变量。
【讨论】:
+1 谢谢。请发布完整的答案,我会接受你的 这是英语俚语,意为“意想不到的场景”【参考方案2】:我认为你可以这样做:
curl_setopt($s, CURLOPT_POSTFIELDS, http_build_query($this->_postFields));
【讨论】:
【参考方案3】:如果我理解,你可以使用 json。
$array = array(1,2,3);
$encoded = json_encode($array);
$decoded = json_decode($encoded);
print_r($decoded); //Look to it
如果不是,可以是:
$array = array(1,2,3);
echo http_build_query($array); //Look to it
【讨论】:
以上是关于如何使用 PHP 序列化数组(数组到查询字符串)的主要内容,如果未能解决你的问题,请参考以下文章