php版获取重定向后地址的代码分享
如何获取重定向的地址呢?我们用php实现这样的功能,分享下我的代码,有需要的朋友参考下。
代码如下:
<?php
//取重定向的地址
class RedirectUrl{
//地址
var $url;
//初始化地址
function RedirectUrl($url){
$this->url = $url;
}
/**
* get_redirect_url()
* 取重定向的地址
*
* @param string $url
* @return string
*/
private function get_redirect_url($url){
$redirect_url = null; $url_parts = @parse_url($url);
if (!$url_parts) return false;
if (!isset($url_parts['host'])) return false; //can't process relative URLs
if (!isset($url_parts['path'])) $url_parts['path'] = '/'; $sock = fsockopen($url_parts['host'], (isset($url_parts['port']) ? (int)$url_parts['port'] : 80), $errno, $errstr, 30);
if (!$sock) return false; $request = "HEAD " . $url_parts['path'] . (isset($url_parts['query']) ?'?'.$url_parts['query'] : '') . " HTTP/1.1\r\n";
$request .= 'Host: ' . $url_parts['host'] . "\r\n";
$request .= "Connection: Close\r\n\r\n";
fwrite($sock, $request);
$response = '';
while(!feof($sock)) $response .= fread($sock, 8192);
fclose($sock); if (preg_match('/^Location: (.+?)$/m', $response, $matches)){
return trim($matches[1]);
} else {
return false;
}
} /**
* get_all_redirects()
* 取所有重定向地址
*
* @param string $url
* @return array
*/
private function get_all_redirects($url){
$redirects = array();
while ($newurl = $this->get_redirect_url($url)){
if (in_array($newurl, $redirects)){
break;
}
$redirects[] = $newurl;
$url = $newurl;
}
return $redirects;
} /**
* get_final_url()
* 取实际地址
*
* @param string $url
* @return string
*/
function get_final_url(){
$redirects = $this->get_all_redirects($this->url); if (count($redirects)>0){
return array_pop($redirects);
} else {
return $this->url;
}
}
} /**
* get_show_pic
* 取最终要显示的图片地址
*
* @param string $url
* @return string
*/
function get_show_pic($url,$noimg ='noimg.gif',$newimg="http://www.jbxue.com/ test.gif"){
$obj = new RedirectUrl($url); $realurl = $obj->get_final_url(); if(strpos($realurl,$noimg)>0){
return $newimg;
}
return $url;
}
//参考
echo "<img src='".get_show_pic("http://www.jbxue.com /5.jpg")."'/>";
php版获取重定向后地址的代码分享的更多相关文章
- JSP 获取真实IP地址的代码
[转载]JSP 获取真实IP地址的代码 JSP 获取真实IP地址的代码 在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的. ...
- 【转载】JSP 获取真实IP地址的代码
JSP 获取真实IP地址的代码 在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的. 但是在通过了 Apache,Squid ...
- openresty(nginx)中使用lua脚本获取请求IP地址的代码
人狠话不多,直接上代码:------------------------------------------------------------------------------------- lo ...
- C#获取本地IP地址[常用代码段]
获得当前机器的IP代码,假设本地主机为单网卡 string strHostName = Dns.GetHostName(); //得到本机的主机名 IPHostEntry ipEntry = Dns. ...
- 使用curl获取Location:重定向后url
在php获取http头部信息上,php有个自带的函数get_headers(),我以前也是用这个的,听说效率在win上不咋地,再加上最近研究百度url无果,写了cURL获取重定向url的php代码来折 ...
- php 使用curl获取Location:重定向后url
在php获取http头部信息上,php有个自带的函数get_headers(),我以前也是用这个的,听说效率在win上不咋地,再加上最近研究百度url无果,写了cURL获取重定向url的php代码来折 ...
- php获取客户端ip地址
本文介绍一个,php获取客户端的IP地址的实例代码,有需要的朋友参考下吧. 获取客户端IP地址的代码,如下: 复制代码代码示例: <?php//取得客户端IP的函数function get_cl ...
- C# — 动态获取本地IP地址及可用端口
1.在VS中动态获取本地IP地址,代码如下: 2.获取本机的可用端口以及已使用的端口:
- .net获取本地ip地址
整理代码,.net获取本地ip地址,代码如下: string name = Dns.GetHostName(); IPHostEntry IpEntry = Dns.GetHostEntry(name ...
随机推荐
- Asp.Net 之 网页快照
此文做法不是 Control.DrawToBitmap ,而是直接QueryInterface 浏览器Com对象的 IViewObject 接口,用它实现的Draw方法,画到图像上. 首先,定义IVi ...
- Python 计算程序运行时间
import time def start_sleep(): time.sleep(3) if __name__ == '__main__': #The start time st ...
- TCP/IP协议原理与应用笔记17:IP编址(重点)
1. IP地址(通用标识符) 对于同一个网络设备(主机或路由器)的不同网络连接,需要不同的IP地址进行标识 2. 主机标识符 主要有下面三种方式的主机标识方式: (1)Name:是什么,可读性强(了解 ...
- 字体的大小(pt)和像素(px)如何转换?
px:相对长度单位.像素(Pixel). pt:绝对长度单位.点(Point). 1in = 2.54cm = 25.4 mm = 72pt = 6pc 具体换算是: Points Pixels Em ...
- IDL中File_Search函数用法详解(转)
来自:http://blog.sina.com.cn/s/blog_764b1e9d01014ajp.html 在利用IDL进行批处理时,通常用到file_search函数进行输入路径文件的搜索,现根 ...
- linux用户及组管理
useradd 添加用户 passwd 修改用户密码 userdel 删除用户,默认不删除用户主目录和email,如果想删除可加 –r 参数 groupadd 添 ...
- [设计模式]<<设计模式之禅>>工厂方法模式
1 女娲造人的故事 东汉<风俗通>记录了一则神话故事:“开天辟地,未有人民,女娲搏黄土做人”,讲述的内容就是大家非常熟悉的女娲造人的故事.开天辟地之初,大地上并没有生物,只有苍茫大地,纯粹 ...
- Laravel 中查询 where 记录
Laravel 的 Eloquent 使用 Between $query->whereBetween('age',[$from,$to]) 这是生成 And between ... and .. ...
- SQLite的查询
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using Sy ...
- 软件设计师考试计算机系统知识——CPU
第一章: 计算机系统知识 1.1.1计算机系统硬件的基本组成 运算器.控制器.存储器.输入设备.输出设备 1.1.2 中央处理器 ①CPU的功能: a.程序控制:CPU通过执行指令来控制程序执行的顺序 ...