解析php版获取重定向后的地址(代码)
2023-06-13 09:15:02 时间
//取重定向的地址
classRedirectUrl{
//地址
var$url;
//初始化地址
functionRedirectUrl($url){
$this->url=$url;
}
/**
*get_redirect_url()
*取重定向的地址
*
*@paramstring$url
*@returnstring
*/
privatefunctionget_redirect_url($url){
$redirect_url=null;
$url_parts=@parse_url($url);
if(!$url_parts)returnfalse;
if(!isset($url_parts["host"]))returnfalse;//can"tprocessrelativeURLs
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)returnfalse;
$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)){
returntrim($matches[1]);
}else{
returnfalse;
}
}
/**
*get_all_redirects()
*取所有重定向地址
*
*@paramstring$url
*@returnarray
*/
privatefunctionget_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()
*取实际地址
*
*@paramstring$url
*@returnstring
*/
functionget_final_url(){
$redirects=$this->get_all_redirects($this->url);
if(count($redirects)>0){
returnarray_pop($redirects);
}else{
return$this->url;
}
}
}
/**
*get_show_pic
*取最终要显示的图片地址
*
*@paramstring$url
*@return string
*/
functionget_show_pic($url,$noimg="noimg.gif",$newimg="http://special.ku6img.com/projects/2010/d-color/images/slt-1.jpg"){
$obj=newRedirectUrl($url);
$realurl=$obj->get_final_url();
if(strpos($realurl,$noimg)>0){
return$newimg;
}
return$url;
}
//参考
echo"<imgsrc="".get_show_pic("http://i2.ku6img.com/encode/picpath/2010/12/9/14/1294948410019/5.jpg").""/>";
?>
相关文章
- 基于纯真本地数据库的 IP 地址查询 PHP 源码
- Mobile Detect:移动设备(手机和平板)检测的 PHP 类库
- 数据库PHP究竟如何还原MySQL数据库?(php还原mysql)
- PHP 引用原理详解编程语言
- Linux下搭建完善的PHP开发环境(linux搭建php环境)
- MySQL之PHP语句精通法则(phpmysql语句)
- 数据库PHP编程实现从Oracle数据库读取数据(php读取oracle)
- 内 php 耗时查看Oracle中PHP耗时的小时分解(oracle查询小时)
- Linux下如何调试PHP程序(linux调试php)
- 系统重启Linux系统,PHP重新启动(重启phplinux)
- MySQL和PHP解决乱码问题(mysql php 乱码)
- PHP操作MSSQL——实现高效读写(php读写mssql)
- 解决PHP读取MSSQL数据库乱码问题(php读mssql乱码)
- PHP与MSSQL融合产生的丰盛果实(php和mssql环境)
- PHP与MSSQL数据库之间的转义学习(php mssql 转义)
- PHP连接MSSQL 64位数据库的实现(php mssql 64)
- 缓存技术的实践基于 Redis 与 PHP 的实现(标签 redis php)
- PHP与javascript对多项选择的处理
- PHP伪静态页面函数附使用方法
- php中关于mysqli和mysql区别的一些知识点分析
- php团购折扣计算公式
- php模拟asp.netwebFrom按钮提交事件实例
- 9段PHP实用功能的代码推荐
- PHP中Memcache操作类及用法实例