CURL Get Request with a parameter that contains a

2019-02-12 05:25发布

问题:

I'm trying to make a CURL GET to scrape a facebook open graph object:

GET https://graph.facebook.com/?id=OBJECT_URL&scrape=true&method=post

In my case, OBJECT_URL contains GET parameters:

https://www.example.com/og.php?a=b&c=d

For that reason I can't have it as a GET parameter in file_get_contents() or CURLOPT_URL, as it'd turn out something like that:

https://graph.facebook.com/?id=https://www.example.com/og.php?a=b&c=d&scrape=true&method=post

Is there a way to pass it as a GET parameter in a way similar to CURLOPT_POSTFIELDS?

回答1:

You need to escape your parameters, the http_build_query function will be useful:

$query = http_build_query([
 'id' => 'http://foo?a=1&b=2',
 'scrape' => true,
 'method' => 'post'
]);

$url = "https://graph.facebook.com/?".$query;

var_dump($url);

This will output:

https://graph.facebook.com/?id=http%3A%2F%2Ffoo%3Fa%3D1%26b%3D2&scrape=1&method=post