我想在PHP中使用cURL
获取重定向网址。
我目前使用的代码是:
public function request($uri = null)
{
$redirects = 0;
if ($uri === null) {
$uri = $this->getUri();
}
while ($redirects < $this->options['maxredirects']) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $uri);
curl_setopt($ch, CURLOPT_USERAGENT, $this->options['useragent']);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, $this->options['timeout']);
$result = curl_exec($ch);
$info = curl_getinfo($ch);
$this->addResult($result, $info);
if (floor($info['http_code'] / 100) != 3) {
return null;
}
$redirects++;
}
}
我不知道如何使用CURLOPT_FOLLOWLOCATION
,因为(如果错误,请纠正我)自动跟随重定向。
我希望它会出现在curl_getinfo()
中,但事实并非如此。看起来我必须启用CURLOPT_HEADER
并解析标头以获取“下一个”网址。
explode()
\n
上的字符串找到以Location:
开头的项目吗?答案 0 :(得分:2)
是的,您将CURLOPT_HEADER
设置为true
,然后通过使用\r\n
将其展开来解析字符串。
还有其他方法,但不确定它们是否适用于您的情况 - get_headers()
和http://www.php.net/manual/en/function.http-head.php