19

I'm trying to make a cURL GET to scrape a Facebook 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 this:

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?

Danny Beckett
  • 20,529
  • 24
  • 107
  • 134
Maxim Laco
  • 545
  • 2
  • 7
  • 17

1 Answers1

41

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
Andrzej Budzanowski
  • 1,013
  • 11
  • 17