问题前言
有没有遇到过url缩短之类的链接或者是加密过的跳转URL,那么我们想得到跳转后的真实url怎么弄?
一个一个点击链接后再复制?那太lou了,试试下面这段代码吧
解决方案
<?php /** * 获取多次跳转后真实的url * @param str $url 查询 * $return str 定向后的url的真实url */ function getrealurl($url){ $header = @get_headers($url,1); // 默认第二个参数0,可选1,返回关联数组 if(!$header){ exit('无法打开此网站'.$url); } //var_dump($header); if (strpos($header[0],'301') || strpos($header[0],'302')) { if(is_array($header['Location'])) { return $header['Location'][count($header['Location'])-1]; }else{ return $header['Location']; } }else { return $url; } } header('Content-Type: text/html; charset=utf-8'); $url = 'http://www.xxx.com'; $url = getrealurl($url); echo '真实的url为:'.$url;
使用说明
仅适用于抓取 Location 类的跳转301/302,如果是使用js跳转的中转页面则无法抓取
header('Location: http://www.xxx.com');
请根据自己实际情况做相应修改