1

I'm aware that curl's POSTFIELDS option will take either a query string or an associative array.

curl_setopt($curl, CURLOPT_POSTFIELDS, $_POST);

But lets say I have a page with an input like this:

<input type="text" name="address[line1]">

PHP will create a multi-dimensional array $_POST['address']['line1'], which unfortunately curl_setopt doesn't know what to do with. Is there some simple way to convert an associative array that is potentially multidimensional into a valid HTTP query string?

Alternately, is there some way to access the raw HTTP post query string like you can do with the get $_SERVER['QUERY_STRING']?

1
  • Yeah, that's exactlyi what I was looking for. Thanks so much! Commented Apr 8, 2017 at 11:47

1 Answer 1

4

You can use http_build_query() to create a string that you can pass to cURL:

<?php
$posted = ["foo"=>"bar", "address"=>["line1"=>"foo"]];
$string = http_build_query($posted);

echo $string;

Output:

foo=bar&address%5Bline1%5D=foo

You can also get access to the raw POST data using input:// but that is rarely necessary, unless dealing with non-HTML data.

Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.