很多的网站都使用了URL重定向,这就导致了采集到URL时HTML状态位为302、301的错误。为了避免这个错误,需要判断html头(header) 的信息,当html状态是301或302时,url就不是原来的那个。使用以下的函数可以根据你查询的UR得到真实的URL。再从真实的URL进行采集。<?php function realurl($hosturl)

很多的网站都使用了URL重定向,这就导致了采集到URL时HTML状态位为302、301的错误。为了避免这个错误,需要判断html头(header) 的信息,当html状态是301或302时,url就不是原来的那个。使用以下的函数可以根据你查询的UR得到真实的URL。

再从真实的URL进行采集。


php获取URL302、301重定向后的URL网址


<?php
function realurl($hosturl) {
	$header = get_headers($hosturl, 1);
	echo 'html状态:' ;
	$righturl='';
	if( $header[0]=='HTTP/1.0 302 Found'||
		$header[0]=='HTTP/1.0 302 Moved Temporarily'||
		$header[0]=='HTTP/1.0 301 Moved Permanently'||
		$header[0]=='HTTP/1.0 302 Object moved'||
		$header[0]=='HTTP/1.1 302 Found'||
		$header[0]=='HTTP/1.1 302 Moved Temporarily'||
		$header[0]=='HTTP/1.1 301 Moved Permanently'||
		$header[0]=='HTTP/1.1 302 Object moved')
	{
		$righturl = (strpos($header['Location'],'/')==0) ? $hosturl.$header['Location']: $header['Location'];
		echo '重定向<br />真实的URL为:'.$righturl;
	}elseif($header[0]=='HTTP/1.1 200 OK'||$header[0]=='HTTP/1.0 200 OK') {
		echo '<font color="#666633">200 OK</font>'.'<br />';
		$righturl= $hosturl;
	}else {
		echo '<font color="#ff0033">'.$header[0].'</font>';
		exit('<br />url无法解析');
	}
	if(is_array($righturl)) {
		$righturl = $righturl[0];
		echo 'OK 就是你了'.$righturl;
		return $righturl;
	}else {
		return false;
	}
}


//以下为测试
$hosturl = 'http://www.aaaaaa.com/';
realurl($hosturl);
/*
output
html状态:重定向
真实的URL为:http://aaaaaa.com
*/
?>


搞定,就是这么简单


上一篇:超经典搞笑说说_一句话把人逗笑

下一篇:用php处理视频格式转换ffmpeg-php安装与使用

评论列表
发表评论
称呼
邮箱
网址
验证码(*)
热评文章
相关阅读