PHP获取URL跳转后的最终地址

作者:Matrix 被围观: 3,618 次 发布时间:2013-12-31 分类:零零星星 | 7 条评论 »

NOTICE:这是一个创建于 1071 天前的主题,其中的信息可能已经有所发展或是发生改变。

仅是获得响应头Location的最终地址

  1. $url='http://189.io/G3qrdn';
  2. echo get_jump_url($url);
  3. function get_jump_url($url) {
  4. $url = str_replace(' ','',$url);
  5. do {//do.while循环:先执行一次,判断后再是否循环
  6. $curl = curl_init($url);
  7. curl_setopt($curl, CURLOPT_HEADER, 1);
  8. curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
  9. curl_setopt($curl, CURLOPT_TIMEOUT, 10);
  10. $header = curl_exec($curl);
  11. curl_close($curl);
  12. preg_match('|Location:\s(.*?)\s|',$header,$tdl);
  13. if(strpos($header,"Location:")){
  14. $url=$tdl ? $tdl[1] :  null ;
  15. }
  16. else{
  17. return $url.'';
  18. break;
  19. }
  20. }while(true);
  21. }

参考:http://bbs.csdn.net/topics/390349430
附curl常量:
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);//允许链接自动跳转
curl_setopt($curl, CURLOPT_MAXREDIRS, 3);//限定CURLOPT_FOLLOWLOCATION递归返回的数量
CURLOPT_AUTOREFERER :curl 会自动添加 Referer header 在每一个跳转链接,也就是一跟到底。
这样也就避免上面代码的do while循环。

建议使用get_headers()函数解决

参考:http://upc.gg.blog.163.com/blog/static/297984982013123970455/

本文固定链接:http://www.hhtjim.com/php-ultimately-address-the-url-after-the-jump.html
Matrix
本文章由 Matrix 于2013年12月31日发布在零零星星分类下,目前没有通告,你可以至底部留下评论。
转载请注明:PHP获取URL跳转后的最终地址-HHTjim'S 部落格
关键字:,

有7 条评论 »

  1. zz zz 2016-4-29 13:54:55 +0800#5

    测试不行啊。$url = 'http://www.chong4.com.cn/cydb/go.php?7218_29882_22t'; 还是只得到了跳转一次的。求解

  2. blogle blogle 2016-3-24 13:03:50 +0800#4

    为什么我在本地测试可以获取,上传到空间获取的还是原地址??

    • Matrix Matrix Moderator 2016-4-3 21:14:39 +0800

      这个真不清楚哦。我只是代码的搬运工

  3. 鬼少 鬼少 2014-3-15 6:55:41 +0800#3

    CURLOPT_FOLLOWLOCATION指明:
    让curl递归的抓取http头中Location中指明的url。
    当抓取次数超过CURLOPT_MAXREDIRS时,递归终止。

    • Matrix Matrix Moderator 2014-3-15 12:48:31 +0800

      😀 谢啦 有这玩意真好

  4. 鬼少 鬼少 2014-3-15 6:54:19 +0800#2

    更简单的:

  5. Small Desert Small Desert 2014-1-12 22:16:12 +0800#1

    飘过--- 😎

添加新评论 »

 😛 Sad 忧伤 👿 Smile 笑脸 😳 😀 😯 😮 😕 😎 😆 😡 😈 Roll Eyes 转眼珠 😉 💡 😐 😥 Mr Green 绿脸先生

NOTICE: You should type some Chinese word (like “你好”) in your comment to pass the spam-check, thanks for your patience!