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,说明存在。 ?> |