使用curl获取Location:重定向后url

作者:enenba | 发表于:2012-11-29 16:30 | 分类:php源码

在php获取http头部信息上,php有个自带的函数get_headers(),我以前也是用这个的,听说效率在win上不咋地,再加上最近研究百度url无果,写了cURL获取重定向url的php代码来折腾。
以前我是用get_headers来获取跳转后的url

get_headers的代码

//curl的百度百科
$url = 'http://www.baidu.com/link?url=77I2GJqjJ4zBBpC8yDF8xDhiqDSn1JZjFWsHhEoSNd85PkV8Xil-rckpQ8_kjGKNNq';
$header = get_headers($url,1);
if (strpos($header[0],'301') || strpos($header[0],'302')) {
	if(is_array($header['Location'])) {
		$info = $header['Location'][count($header['Location'])-1];
	}else{
		$info = $header['Location'];
	}
}
echo $info;

 

现在用cURL来重写一遍代码
CURL是需要设置curl_setopt 和curl_getinfo才可以获取 Location:重定向

//curl的百度百科
$url = 'http://www.baidu.com/link?url=77I2GJqjJ4zBBpC8yDF8xDhiqDSn1JZjFWsHhEoSNd85PkV8Xil-rckpQ8_kjGKNNq';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
// 不需要页面内容
curl_setopt($ch, CURLOPT_NOBODY, 1);
// 不直接输出
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// 返回最后的Location
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_exec($ch);
$info = curl_getinfo($ch,CURLINFO_EFFECTIVE_URL);
curl_close($ch);
echo '真实url为:'.$info;

 

 


因为还和网速有关,两段代码的效率我还没测试 。

end....

上一篇: php实现获取网页请求状态非get_headers   |   下一篇:从《网页降噪助你提升搜索引擎表现》来做php正文提取算法» 标签: php函数 curl 真实url 重定向

评论:

2012-11-29 18:53

重要加了广告了

2012-11-30 10:00

反正也闲着,加点ad衬托一下