介绍
这篇文章将为大家详细讲解有关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