使用CURL进行GET请求,参数包含一个GET URL。

19

我正在尝试使用cURL GET 请求来抓取 Facebook Graph 对象:

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

在我的情况下,OBJECT_URL 包含 GET 参数:

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

因此,我不能把它作为GET参数放在file_get_contents()CURLOPT_URL中,否则会变成这样:

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

是否有一种类似于 CURLOPT_POSTFIELDS 的方式可以将它作为 GET 参数传递?

1个回答

41
你需要转义你的参数,http_build_query 函数将是有用的:
$query = http_build_query([
 'id' => 'http://foo?a=1&b=2',
 'scrape' => true,
 'method' => 'post'
]);

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

var_dump($url);

这将输出:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接