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 文件上传实例代码
Apr 19 PHP
JSON在PHP中的应用介绍
Sep 08 PHP
php daddslashes()和 saddslashes()有哪些区别分析
Oct 26 PHP
探讨PHP JSON中文乱码的解决方法详解
Jun 06 PHP
php similar_text()函数的定义和用法
May 12 PHP
PHP入门教程之操作符与控制结构流程详解
Sep 09 PHP
PHP 搜索查询功能实现
Nov 29 PHP
一键生成各种尺寸Icon的php脚本(实例)
Feb 08 PHP
Thinkphp5框架实现获取数据库数据到视图的方法
Aug 14 PHP
laravel 字段格式化 modle 字段类型转换方法
Sep 30 PHP
Laravel 5.1 框架Blade模板引擎用法实例分析
Jan 04 PHP
Laravel中如何轻松容易的输出完整的SQL语句
Jul 26 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
在PHP3中实现SESSION的功能(二)
2006/10/09 PHP
php中的观察者模式
2010/03/24 PHP
php循环检测目录是否存在并创建(循环创建目录)
2011/01/06 PHP
php实现的简单数据库操作Model类
2016/11/16 PHP
ThinkPHP使用getlist方法实现数据搜索功能示例
2017/05/08 PHP
JQuery开发的数独游戏代码
2010/10/29 Javascript
js substr、substring和slice使用说明小记
2011/09/15 Javascript
ASP.NET jQuery 实例6 (实现CheckBoxList成员全选或全取消)
2012/01/13 Javascript
js替换字符串的所有示例代码
2013/07/23 Javascript
jquery如何实现锚点链接之间的平滑滚动
2013/12/02 Javascript
js检验密码强度(低中高)附图
2014/06/05 Javascript
JS实现的用来对比两个用指定分隔符分割的字符串是否相同
2014/09/19 Javascript
JavaScript从数组中删除指定值元素的方法
2015/03/18 Javascript
noty ? jQuery通知插件全面解析
2016/05/18 Javascript
微信小程序 中wx.chooseAddress(OBJECT)实例详解
2017/03/31 Javascript
vue select二级联动第二级默认选中第一个option值的实例
2018/01/10 Javascript
微信小程序使用scroll-view标签实现自动滑动到底部功能的实例代码
2018/11/09 Javascript
javascript设计模式 ? 中介者模式原理与用法实例分析
2020/04/20 Javascript
antd的select下拉框因为数据量太大造成卡顿的解决方式
2020/10/31 Javascript
Python版的文曲星猜数字游戏代码
2013/09/02 Python
Django之无名分组和有名分组的实现
2019/04/16 Python
Python变量访问权限控制详解
2019/06/29 Python
python Tcp协议发送和接收信息的例子
2019/07/22 Python
Jupyter notebook无法导入第三方模块的解决方式
2020/04/15 Python
keras打印loss对权重的导数方式
2020/06/10 Python
pycharm使用技巧之自动调整代码格式总结
2020/11/04 Python
2013年保送生自荐信格式
2013/11/20 职场文书
售后主管岗位职责
2013/12/08 职场文书
美发店5.1活动方案
2014/01/24 职场文书
爱国卫生月活动总结范文
2014/04/25 职场文书
国家励志奖学金个人先进事迹材料
2014/05/04 职场文书
员工薪酬激励方案
2014/06/13 职场文书
left join、inner join、right join的区别
2021/04/05 MySQL
教你怎么用Python生成九宫格照片
2021/05/20 Python
使用pandas生成/读取csv文件的方法实例
2021/07/09 Python
Python 正则模块详情
2021/11/02 Python