Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

CURL Get Request with a parameter that contains a GET url

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?

like image 557
Maxim Laco Avatar asked Sep 15 '15 21:09

Maxim Laco


1 Answers

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
like image 185
Andrzej Budzanowski Avatar answered Oct 16 '22 17:10

Andrzej Budzanowski