博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP判断远程文件是否存在
阅读量:6546 次
发布时间:2019-06-24

本文共 2149 字,大约阅读时间需要 7 分钟。

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

转载于:https://www.cnblogs.com/liliuguang/p/9927709.html

你可能感兴趣的文章
Hello,Java女神
查看>>
rpc远程调用开发
查看>>
复习-css控制文本字体属性
查看>>
学习设计模式——观察者模式
查看>>
什么是centos 的epel源
查看>>
删除LVM步骤
查看>>
Zookeeper客户端
查看>>
linux常用指令
查看>>
Oracle使用PLSQL连接时,导入导出问题
查看>>
梦游西藏
查看>>
Servlet Demo
查看>>
Struts2中的<s:action>标签
查看>>
Java中取某一个范围的随机数
查看>>
Linux 进程管理
查看>>
一条复杂SQL实现思路
查看>>
我的友情链接
查看>>
android app 退出时提示确认
查看>>
win10 配置
查看>>
java 编译100个范例
查看>>
Session Cookie ServletContext
查看>>