我有一个来自$ _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);
任何想法?
提前感谢。
答案 0 :(得分:5)
我认为你可以这样做:
curl_setopt($s, CURLOPT_POSTFIELDS, http_build_query($this->_postFields));
答案 1 :(得分:5)
您可以使用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获得预期的变量。
答案 2 :(得分:1)
如果我理解,你可以使用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