很多的网站都使用了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
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
*/
?>搞定,就是这么简单
评论列表
发表评论
热评文章
相关阅读
