我想在PHP中使用cURL
获取重定向URL。
我目前使用的代码是:
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
并解析标头才能获得"下一个"URL。
- 这是正确的吗
- 如果"是",我将如何解析标头?例如,我可以安全地
explode()
'n
上的字符串并找到以Location:
开头的项目吗
是的,您将CURLOPT_HEADER
设置为true
,然后通过用'r'n
分解字符串来解析字符串。还有其他方法,但不确定它们在您的情况下是否有效-get_headers()
和http://www.php.net/manual/en/function.http-head.php