回答
你会使用
curl_setopt($CURL, CURLOPT_HEADER, TRUE);
,并解析其标头的location
头
+1错过了那一点:) – Sarfraz 2010-10-31 11:06:16
没问题,使用post字段会发送数据,然后服务器会重定向,并且当数据输出为响应时,curl将选择那个,那么位置标题应该在那里。 – RobertPitt 2010-10-31 11:07:57
您可能希望将CURLOPT_FOLLOWLOCATION设置为true。
或者将CURLOPT_HEADER设置为true,然后使用regexp获取位置标题。
也注意到这个PHP安全模式,http://www.php.net/manual/en/function.curl-setopt.php#95027 – RobertPitt 2010-10-31 11:08:34
在这里我得到资源http标题,然后我将标题解析到数组$ retVal中。我得到了代码从这里(http://www.bhootnath.in/blog/2010/10/parse-http-headers-in-php/)解析头你也可以使用http://php.net/manual/en/function.http-parse-headers.php如果你有(PECL pecl_http> = 0.10.0)
$ch = curl_init();
$timeout = 0;
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_HEADER, TRUE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
// Getting binary data
$header = curl_exec($ch);
$retVal = array();
$fields = explode("\r\n", preg_replace('/\x0D\x0A[\x09\x20]+/', ' ', $header));
foreach($fields as $field) {
if(preg_match('/([^:]+): (.+)/m', $field, $match)) {
$match[1] = preg_replace('/(?<=^|[\x09\x20\x2D])./e', 'strtoupper("\0")', strtolower(trim($match[1])));
if(isset($retVal[$match[1]])) {
$retVal[$match[1]] = array($retVal[$match[1]], $match[2]);
} else {
$retVal[$match[1]] = trim($match[2]);
}
}
}
//here is the header info parsed out
echo '<pre>';
print_r($retVal);
echo '</pre>';
//here is the redirect
if (isset($retVal['Location'])){
echo $retVal['Location'];
} else {
//keep in mind that if it is a direct link to the image the location header will be missing
echo $_GET[$urlKey];
}
curl_close($ch);
简单的方法来找到重定向的URL(如果你不这样做想提前知道)
$last_url = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);
它是'CURLINFO_REDIRECT_URL' – Sparky 2012-08-14 10:14:53
我在这里找不到CURLINFO_REDIRECT_URL http:// www.php.net/manual/en/function.curl-getinfo.php – 2012-08-15 04:41:15
但我在这里找到http://php.net/ChangeLog-5.php !!! CURLINFO_REDIRECT_URL被添加到5.3.7 - 但没有记录。但是从源头上我假设这是(第一个)重定向url值,以防curl调用不使用自动重定向。所以我们知道下一个网址是什么,以防万一我们启用了重定向。感谢@Sparky强迫我挖掘。 – 2012-08-15 04:59:53
- 1. curl被重定向后获取url
- 2. 使用cURL获取重定向URL
- 3. 将所有变量的URL重定向到另一个URL
- 4. 获取URL的另一个URL重定向到
- 5. 将URL重定向到GET变量
- 6. 将STDERR重定向到一个变量
- 7. PHP获取重定向URL
- 8. 获取URL的一部分重定向
- 9. 如何从url获取变量并使用php重定向301?
- 10. 发送帖子后要获取重定向URL Curl请求
- 11. 重定向URL(重定向一个域到另一个域上采取相同)
- 12. 重定向到一个重写的URL
- 13. htaccess重定向存在一个特定的URL变量
- 14. .htaccess的重定向到一个URL到另一个URL
- 15. php curl获取一个url的链接
- 16. php curl重定向到另一个具有特定url格式的网站
- 17. htaccess从变量URL重定向到干净URL
- 18. 基于url变量的php重定向
- 19. 基于url的变量php重定向
- 20. URL重定向C#基于变量
- 21. Django响应重定向变量url
- 22. PHP的URL变量重定向
- 23. 问题与重定向到一个URL
- 24. 将301个静态变量lang URL重定向到另一个域
- 25. 如何从一个URL重定向到另一个URL?
- 26. 一个PHP后获取推荐URL重定向
- 27. 将多个变量获取到一个URL地址
- 28. 重写url并获取变量
- 29. 重定向到另一个网址,而不改变URL
- 30. htaccess的 - 从URL将流量重定向到另一个
可能重复[如何使用cURL获取目标URL?](http://stackoverflow.com/questions/1439040/how-can-i-get-the- destination-url-using-curl) – 2016-05-26 17:00:22