PHP判断远程文件是否存在(reship)

 

/*
    函数:remote_file_exists
    功能:判断远程文件是否存在
    参数: $url_file - 远程文件URL
    返回:存在返回true,不存在或者其他原因返回false
*/
function remote_file_exists($url_file){
        //检测输入
        $url_file = trim($url_file);
        if (empty($url_file)) { return false; }
        $url_arr = parse_url($url_file);
        if (!is_array($url_arr) || empty($url_arr)){ return false; }

        //获取请求数据
        $host = $url_arr['host'];
        $path = $url_arr['path'] ."?". $url_arr['query'];
        $port = isset($url_arr['port']) ? $url_arr['port'] : "80";

        //连接服务器
        $fp = fsockopen($host, $port, $err_no, $err_str, 30);
        if (!$fp){ return false; }

        //构造请求协议
        $request_str = "GET ".$path." HTTP/1.1/r/n";
    $request_str .= "Host: ".$host."/r/n";
    $request_str .= "Connection: Close/r/n/r/n";

        //发送请求
    fwrite($fp, $request_str);
        $first_header = fgets($fp, 1024);
    fclose($fp);

        //判断文件是否存在
        if (trim($first_header) == ""){ return false; }
        if (!preg_match("/200/", $first_header)){
                return false;
        }
        return true;
}

//测试代码
$str_url = 'http://www.phpx.com/viewarticle.php?id=119617';
$exits = remote_file_exists($str_url);
echo $exists ? "Exists" : "Not exists";

?>

你可能感兴趣的:(php,php,url,file,header,fp,path)