thinkphp中判斷遠端及非遠端檔案是否存在
阿新 • • 發佈:2019-02-15
//判斷遠端檔案是否存在 /* 函式: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); } }