zl程序教程

您现在的位置是:首页 >  后端

当前栏目

解析php版获取重定向后的地址(代码)

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").""/>";
 ?>