1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
<?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"
;
$request_str
.=
"Host:"
.
$host
.
""
;
$request_str
.=
"Connection:Close"
;
//发送请求
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;
}
?>
|
函数描述及例子
1
2
3
4
5
6
|
<?
//测试代码
$str_url
=
'http://127.0.0.2/viewarticle.php?id=119617'
;
$exits
= remote_file_exists(
$str_url
);
echo
$exists
?
"Exists"
:
"Not exists"
;
?>
|
方法一(需要开启allow_url_fopen):
1
2
3
4
5
|
<?php
$url
=
"http://cn.wordpress.org/wordpress-3.3.1-zh_CN.zip"
;
$fileExists
= @
file_get_contents
(
$url
, null, null, -1, 1) ? true : false;
echo
$fileExists
;
//返回1,就说明文件存在。
?>
|
方法二(需要服务器支持Curl组件):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
<?php
function
check_remote_file_exists(
$url
) {
$curl
= curl_init(
$url
);
// 不取回数据
curl_setopt(
$curl
, CURLOPT_NOBODY, true);
curl_setopt(
$curl
, CURLOPT_CUSTOMREQUEST,
'GET'
);
// 发送请求
$result
= curl_exec(
$curl
);
$found
= false;
// 如果请求没有发送失败
if
(
$result
!== false) {
/** 再检查http响应码是否为200 */
$statusCode
= curl_getinfo(
$curl
, CURLINFO_HTTP_CODE);
if
(
$statusCode
== 200) {
$found
= true;
}
}
curl_close(
$curl
);
return
$found
;
}
$url
=
"http://cn.wordpress.org/wordpress-3.3.1-zh_CN.zip"
;
echo
check_remote_file_exists(
$url
);
// 返回1,说明存在。
?>
|