//判断远程文件是否存在 /* 函数:remote_file_exists 功能:判断远程文件是否存在 参数: $url_file - 远程文件URL $flag - true为判断远程文件,false为判断非远程文件 返回:存在返回true,不存在或者其他原因返回false */ static function remote_file_exists($url_file,$flag = true){ if($flag == true){ //默认是判断远程文件 //检测输入 $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; }else if($flag == false){ //非远程文件 return file_exists($url_file); } }
?