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

  本文实例讲述了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 = 'http://www.glzy8.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: http://www.glzy8.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] => http://www.glzy8.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程序设计有所帮助。