PHP判断远程文件是否存在


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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM