<?php/*
函数: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;
}
函数: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;
}
如果是HTML或图片等小文件都可以通过file_get_contents()或file()这类函数解决的。
不需要改上面那个了~
如果是大文件或者需要身份认证的再想着改上面的函数吧。
比自己写速度快多了
$xxx=file_get_contents("http://www.xXXX.com')
if ($xxx){
将$xxx写入文件}