php中如何获取跳转后的url

  介绍

这篇文章将为大家详细讲解有关php中如何获取跳转后的url,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

php获取跳转url的方法:1、使用get_headers函数获取跳转后的url,该函数可以获取服务器响应一个HTTP请求所发送的所有标头;2、使用fsockopen()函数;3、使用使用旋度函数。

有时候我们会在开发中,经常会遇到url有301年或302年重定向的情况,这时候我们可能需要获取重定向之后的url、下面我们介绍一下几种获取重定向url的方法:

1,用get_headers函数

php自带的get_headers函数可以获取服务器响应一个HTTP请求所发送的所有标头,我们可以尝试用该函数实现。

函数get_redirect_url ($ url) {   头=get_headers美元($ url, 1);   如果(大小写敏感(头[0],美元的301′)!==false | |大小写敏感(头[0],美元302′)!==false) {   如果(is_array($头[& # 39;位置# 39;])){   返回$头[& # 39;位置# 39;][count($头[& # 39;位置# 39;])1];   其他}{   返回$头[& # 39;位置# 39;];   }   其他}{   返回$ url;   }   }

2,使用fsockopen()内置函数

函数get_redirect_url ($ url) {   美元redirect_url=false;   $ url_parts=@parse_url ($ url);   如果(! $ url_parts)返回false;   如果(!收取($ url_parts[& # 39;主机# 39;]))返回false;   如果(!收取($ url_parts [& # 39; path & # 39;])) $ url_parts [& # 39; path & # 39;]='/';   $袜子=fsockopen ($ url_parts[& # 39;主机# 39;],(收取($ url_parts[& # 39;港口# 39;])?(int) $ url_parts[& # 39;港口# 39;]:80),美元errno, errstr美元,30);   如果(! $袜子)返回false;   $请求=巴贰薄? url_parts [& # 39; path & # 39;]。(收取($ url_parts[& # 39;查询# 39;])?“?”。$ url_parts[& # 39;查询# 39;]:“)。“HTTP/1.1 \ r \ n”;   $请求。=爸鞒秩?”。$ url_parts[& # 39;主机# 39;]。“\ r \ n”;   请求。美元="连接:紧密\ r \ n \ r \ n”;   写入文件(袜子,请求美元);   $响应=?   而(! feof(袜子)美元)$响应。=从文件中读(袜子8192美元);   美元fclose(袜子);   如果(preg_match('/^地点:(+ ?)/美元,美元的回应,$ matches)) {   返回修剪($ matches [1]);   其他}{   返回错误;   }   }

3,使用旋度函数

函数get_redirect_url (url,推荐人美元=",$超时=10){   美元redirect_url=false;   $ ch=curl_init ();   curl_setopt ($ ch CURLOPT_URL $ url);   curl_setopt ($ ch CURLOPT_HEADER真实);   curl_setopt (ch美元,CURLOPT_NOBODY,真的);//不返回请求体内容   curl_setopt (ch美元,CURLOPT_FOLLOWLOCATION,真的);//允许请求的链接跳转   curl_setopt ($ ch CURLOPT_RETURNTRANSFER真实);   curl_setopt ($ ch CURLOPT_TIMEOUT超时美元);   curl_setopt ($ ch CURLOPT_HTTPHEADER阵列(   “接受:*/*”,   “用户代理:Mozilla/4.0 (compatible;MSIE 6.0;Windows NT 5.1;SV1)”,   连接:点火电极));   如果(推荐人美元){   curl_setopt ($ ch CURLOPT_REFERER推荐人美元);//设置推荐人   }   (内容=curl_exec美元ch);   如果(! curl_errno (ch)美元){   $ redirect_url=curl_getinfo (ch美元,CURLINFO_EFFECTIVE_URL);//获取最终请求的url地址   }   返回redirect_url美元;   }

哪个方法的效果更高一些,可以自行测试一下。

关于php中如何获取跳转后的url就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看的到。

php中如何获取跳转后的url