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来自动调用不同服务器上的flash
Oct 09 PHP
实战mysql导出中文乱码及phpmyadmin导入中文乱码的解决方法
Jun 11 PHP
PHP跨平台获取服务器IP地址自定义函数分享
Dec 29 PHP
学习php设计模式 php实现原型模式(prototype)
Dec 07 PHP
学习php设计模式 php实现模板方法模式
Dec 08 PHP
php连接oracle数据库的方法(测试成功)
May 26 PHP
php 访问oracle 存储过程实例详解
Jan 08 PHP
php+ajax实现异步上传文件或图片功能
Jul 18 PHP
Laravel框架使用Seeder实现自动填充数据功能
Jun 13 PHP
用Laravel Sms实现laravel短信验证码的发送的实现
Nov 29 PHP
PHP命名空间用法实例分析
Sep 04 PHP
thinkphp5框架实现数据库读取的数据转换成json格式示例
Oct 10 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 Pear 安装及使用
2009/03/19 PHP
php Smarty 字符比较代码
2011/02/27 PHP
PHP中call_user_func_array()函数的用法演示
2012/02/05 PHP
php上传功能集后缀名判断和随机命名(强力推荐)
2015/09/10 PHP
浅谈PHP正则中的捕获组与非捕获组
2016/07/18 PHP
PHP入门教程之正则表达式基本用法实例详解(正则匹配,搜索,分割等)
2016/09/11 PHP
php查询内存信息操作示例
2019/05/09 PHP
根据鼠标的位置动态的控制层的位置
2009/11/24 Javascript
JavaScript快速检测浏览器对CSS3特性的支持情况
2012/09/26 Javascript
ExtJS如何设置与获取radio控件的选取状态
2014/01/22 Javascript
js实现简单选项卡与自动切换效果的方法
2015/04/10 Javascript
javascript实现手机震动API代码
2015/08/05 Javascript
js使用cookie记录用户名的方法
2015/11/26 Javascript
Vue组件BootPage实现简单的分页功能
2016/09/12 Javascript
Javascript生成带参数的二维码示例
2016/10/10 Javascript
基于Vuejs的搜索匹配功能实现方法
2018/03/03 Javascript
layui table 多行删除(id获取)的方法
2019/09/12 Javascript
解决node.js含有%百分号时发送get请求时浏览器地址自动编码的问题
2019/11/20 Javascript
如何使用three.js 制作一个三维的推箱子游戏
2020/07/29 Javascript
[01:41]DOTA2超级联赛专访YYF 称一辈子难忘TI2
2013/05/28 DOTA
python做量化投资系列之比特币初始配置
2018/01/23 Python
Python使用Scrapy爬虫框架全站爬取图片并保存本地的实现代码
2018/03/04 Python
用Python将一个列表分割成小列表的实例讲解
2018/07/02 Python
Django Form 实时从数据库中获取数据的操作方法
2019/07/25 Python
win10子系统python开发环境准备及kenlm和nltk的使用教程
2019/10/14 Python
解决Django中checkbox复选框的传值问题
2020/03/31 Python
创建索引时需要注意的事项
2013/05/13 面试题
优秀团员个人的自我评价
2013/10/02 职场文书
医学生自荐信
2013/12/03 职场文书
个人考核材料
2014/05/15 职场文书
大学拉赞助协议书范文
2014/09/26 职场文书
家庭困难证明
2014/10/12 职场文书
建筑工程催款函
2015/06/24 职场文书
信息技术课教学反思
2016/02/23 职场文书
分享mysql的current_timestamp小坑及解决
2021/11/27 MySQL
SQL Server一个字符串拆分多行显示或者多行数据合并成一个字符串
2022/05/25 SQL Server