PHP使用get_headers函数判断远程文件是否存在的方法


Posted in PHP onNovember 28, 2014

本文实例讲述了PHP使用get_headers函数判断远程文件是否存在的方法。分享给大家供大家参考。具体实现方法如下:

以前讲过程关于php判断远程文件是否存在的文章都是利用fopen,sockt,curl函数来实现检查远程文件是否存在,下面我再介绍利用 get_headers来检查远程文件是否存在,感兴趣的朋友可以参考一下。

先来简单了解get_headers()函数

get_headers() 返回一个数组m包含有服务器响应一个 HTTP 请求所发送的标头。

get_headers:发送服务器响应HTTP请求

get_headers(字符串url[链接格式])

get_headers()以数组的形式返回服务器HTTP请求m如果执行失败,将返回FALSE和一个错误的水平E_WARNING,

可选参数设置为1,get_headers()能分析系统的响应速度和集数组中的键,

注意:使用该函数需要把 php.ini里面的allow_url_fopen = On,才能使用

实例代码如下:

<?php 

$url = 'https://3water.com'; 

print_r(get_headers($url)); 

print_r(get_headers($url, 1)); 

?>

运行结果如下:
Array

(

    [0] => HTTP/1.1 200 OK

    [1] => Cache-Control: max-age=1800

    [2] => Content-Length: 54874

    [3] => Content-Type: text/html

    [4] => Content-Location: https://3water.com/index.htm

    [5] => Last-Modified: Fri, 28 Nov 2014 03:34:56 GMT

    [6] => Accept-Ranges: bytes

    [7] => ETag: "b66ba847bcad01:bc5"

    [8] => Server: Microsoft-IIS/6.0

    [9] => Date: Fri, 28 Nov 2014 03:37:34 GMT

    [10] => Connection: close

)

Array

(

    [0] => HTTP/1.1 200 OK

    [Cache-Control] => max-age=1800

    [Content-Length] => 54874

    [Content-Type] => text/html

    [Content-Location] => https://3water.com/index.htm

    [Last-Modified] => Fri, 28 Nov 2014 03:34:56 GMT

    [Accept-Ranges] => bytes

    [ETag] => "b66ba847bcad01:bc5"

    [Server] => Microsoft-IIS/6.0

    [Date] => Fri, 28 Nov 2014 03:37:35 GMT

    [Connection] => close

)

判断远程文件是否存在代码如下:
//判断远程文件是否存在   

function remote_file_exists($url) {   

        $executeTime = ini_get('max_execution_time');   

        ini_set('max_execution_time', 0);   

        $headers = @get_headers($url);   

        ini_set('max_execution_time', $executeTime);   

        if ($headers) {   

            $head = explode(' ', $headers[0]);   

            if ( !emptyempty($head[1]) && intval($head[1]) < 400) return true;   

        }   

        return false;   

}

排除重定向的实例代码如下:
<?php  

/** 

 * Fetches all the real headers sent by the server in response to a HTTP request without redirects 

 * 获取不包含重定向的报头 

 */  

     

function get_real_headers($url,$format=0,$follow_redirect=0) {  

  if (!$follow_redirect) {  

    //set new default options  

    $opts = array('http' =>  

        array('max_redirects'=>1,'ignore_errors'=>1)  

    );  

    stream_context_get_default($opts);  

  }  

  //get headers  

    $headers=get_headers($url,$format);  

    //restore default options  

  if (isset($opts)) {  

    $opts = array('http' =>  

        array('max_redirects'=>20,'ignore_errors'=>0)  

    );

    stream_context_get_default($opts);  

  }  

  //return  

    return $headers;  

}  

?>

希望本文所述对大家的PHP程序设计有所帮助。

PHP 相关文章推荐
php Static关键字实用方法
Jun 04 PHP
PHP daddslashes 使用方法介绍
Oct 26 PHP
php修改NetBeans默认字体的大小
Jul 02 PHP
php防止伪造数据从地址栏URL提交的方法
Aug 24 PHP
php字符串过滤与替换小结
Jan 26 PHP
详解WordPress开发中get_header()获取头部函数的用法
Jan 08 PHP
Laravel中log无法写入问题的解决
Jun 17 PHP
PHP生成随机数的方法总结
Mar 01 PHP
ThinkPHP3.2框架自定义配置和加载用法示例
Jun 14 PHP
php curl简单采集图片生成base64编码(并附curl函数参数说明)
Feb 15 PHP
thinkphp 5框架实现登陆,登出及session登陆状态检测功能示例
Oct 10 PHP
yii2.0框架数据库操作简单示例【添加,修改,删除,查询,打印等】
Apr 13 PHP
php的mssql数据库连接类实例
Nov 28 #PHP
smarty中post用法实例
Nov 28 #PHP
smarty简单入门实例
Nov 28 #PHP
php最简单的删除目录与文件实现方法
Nov 28 #PHP
php查找指定目录下指定大小文件的方法
Nov 28 #PHP
thinkphp四种url访问方式详解
Nov 28 #PHP
thinkphp数据查询和遍历数组实例
Nov 28 #PHP
You might like
深入解析php之apc
2013/05/15 PHP
php中explode函数用法分析
2014/11/15 PHP
PHP中iconv函数转码时截断字符问题的解决方法
2015/01/21 PHP
smarty自定义函数htmlcheckboxes用法实例
2015/01/22 PHP
php中实现可以返回多个值的函数实例
2015/03/21 PHP
php算法实例分享
2015/07/14 PHP
利用ASP发送和接收XML数据的处理方法与代码
2007/11/13 Javascript
从零开始学习jQuery (四) jQuery中操作元素的属性与样式
2011/02/23 Javascript
jquery中的 $(&quot;#jb51&quot;)与document.getElementById(&quot;jb51&quot;) 的区别
2011/07/26 Javascript
在js(jquery)中获得文本框焦点和失去焦点的方法
2012/12/04 Javascript
JavaScript中判断对象类型的几种方法总结
2013/11/11 Javascript
jQuery判断checkbox是否选中的3种方法
2014/08/12 Javascript
Node.js中的事件驱动编程详解
2014/08/16 Javascript
Bootstrap每天必学之日期控制
2016/03/07 Javascript
Three.js学习之网格
2016/08/10 Javascript
深入浅析jQuery对象$.html
2016/08/22 Javascript
微信小程序使用form表单获取输入框数据的实例代码
2018/05/17 Javascript
浅析java线程中断的办法
2018/07/29 Javascript
Vue实现调节窗口大小时触发事件动态调节更新组件尺寸的方法
2018/09/15 Javascript
小程序二次贝塞尔曲线实现购物车商品曲线飞入效果
2019/01/07 Javascript
[53:44]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Magma BO3 第一场 1月31日
2021/03/11 DOTA
Python语言描述机器学习之Logistic回归算法
2017/12/21 Python
Python快速转换numpy数组中Nan和Inf的方法实例说明
2019/02/21 Python
对python tkinter窗口弹出置顶的方法详解
2019/06/14 Python
python基于递归解决背包问题详解
2019/07/03 Python
在Django model中设置多个字段联合唯一约束的实例
2019/07/17 Python
python 控制Asterisk AMI接口外呼电话的例子
2019/08/08 Python
Python爬虫如何应对Cloudflare邮箱加密
2020/06/24 Python
python 下载m3u8视频的示例代码
2020/11/11 Python
python使用requests库爬取拉勾网招聘信息的实现
2020/11/20 Python
Python 微信公众号文章爬取的示例代码
2020/11/30 Python
家长会学生家长演讲稿
2013/12/29 职场文书
一句话工作感言
2014/03/01 职场文书
创先争优活动党员公开承诺书
2014/08/29 职场文书
领导干部个人整改措施落实情况汇报
2014/10/29 职场文书
详解Redis瘦身指南
2021/05/26 Redis