一个用php实现的获取URL信息的类

 更新时间:2007年01月02日 00:00:00   作者:  
获取URL信息的类

使用这个类,你能获得URL的如下信息:

- Host 
- Path 
- Statuscode (eg. 404,200, ...) 
- HTTP Version 
- Server 
- Content Type 
- Date 
- The whole header string of the URL
复制代码 代码如下:

<?
/**
* Class for getting information about URL's
* @author    Sven Wagener <[email]sven.wagener@intertribe.de[/email]>
* @copyright Intertribe limited
* @PHP中文社区收集整理 [url]www.phpNet.cn[/url]
* @include          Funktion:_include_
*/
class url{

  var $url="";
  var $url_host;
  var $url_path;
  var $file="";

  var $code="";
  var $code_desc="";
  var $http_version=""; // Variable for HTTP version

  var $header_stream;
  var $header_array;

  var $timeout="1";

  /**
  * Constructor of class url
  * @param string        $url the complete url
  * @desc Constructor of class url
  */
  function url($url){
    $this->url=$url;

    $url_array=parse_url($this->url);
    $this->url_host=$url_array['host'];
    $this->url_path=$url_array['path'];

    if($this->url_path==""){
            $this->url_path="/";
    }

    $this->refresh_headerinfo();
  }

  /**
  * Returns the whole url
  * @return string $url the whole url
  * @desc Returns the whole url
  */
  function get_url(){
          return $this->url;
  }

  /**
  * Returns the host of the url
  * @return string $url_host the host of the url
  * @desc Returns the host of the url
  */
  function get_url_host(){
    return $this->url_host;
  }

  /**
  * Returns the path of the url
  * @return string $url_path the path of the url
  * @desc Returns the path of the url
  */
  function get_url_path(){
    return $this->url_path;
  }

  /**
  * Returns the status code of the url
  * @return string $status_code the status code
  * @desc Returns the status code of the url
  */
  function get_statuscode(){
    return $this->code;
  }

  /**
  * Returns the status code description of the url
  * @return string $status_code_desc the status code description
  * @desc Returns the status code description of the url
  */
  function get_statuscode_desc(){
    return $this->code_desc;
  }

  /**
  * Returns the http version of the url by the returned headers of the server
  * @return string $http_version the http version
  * @desc Returns the http version of the url by the returned headers of the server
  */
  function get_info_http_version(){
    return $this->http_version;
  }

  /**
  * Returns the server type of the url's host by the returned headers of the server
  * @return string header_array['Server'] the server type
  * @desc Returns the server type of the url's host by the returned headers of the server
  */
  function get_info_server(){
    return $this->header_array['Server'];
  }

  /**
  * Returns the date of the url's host by the returned headers of the server
  * @return string $header_array['Date'] the date
  * @desc Returns the date of the url's host by the returned headers of the server
  */
  function get_info_date(){
    return $this->header_array['Date'];
  }

  /*
  function get_info_content_length(){
    return $this->header_array['Content-Length'];
  }
  */

  /**
  * Returns the content type by the returned headers of the server
  * @return string header_array['Content-Type'] the content type
  * @desc Returns the content type by the returned headers of the server
  */
  function get_info_content_type(){
    return $this->header_array['Content-Type'];
  }

  /**
  * Returns the content of the url without the headers
  * @return string $content the content
  * @desc Returns the content of the url without the headers
  */
  function get_content(){
    // Get a web page into a string
    $string = implode ('', file ($this->url));
    return $string;
  }

  /**
  * Returns the whole header of url without content
  * @return string $header the header
  * @desc Returns the whole header of url without content
  */
  function get_header_stream(){
    return $this->header_stream;
  }

  /**
  * Returns the whole headers of the url in an array
  * @return array $header_array the headers in an array
  * @desc Returns the whole headers of the url in an array
  */
  function get_headers(){
    return $this->header_array;
  }

  /**
  * Refreshes the header information
  * @desc Refreshes the header information
  */
  function refresh_headerinfo(){
    // Open socket for connection via port 80 to put headers
    $fp = fsockopen ($this->url_host, 80, $errno, $errstr, 30);
    if (!$fp) {
      // echo "$errstr ($errno)";
      if($errno==0){
              $errstr="Server Not Found";
      }
      $this->code=$errno;
      $this->code_desc=$errstr;
    } else {

      $put_string="GET ".$this->url_path." HTTP/1.0rnHost: ".$this->url_host."rnrn";
      fputs ($fp, $put_string);
      @socket_set_timeout($fp,$this->timeout);

      $stream="";
      $this->header_array="";
      $header_end=false;

      // Getting header string and creating header array
      $i=0;
      while (!feof($fp) && !$header_end) {
        $line=fgets($fp,128);
        if(strlen($line)==2){
          $header_end=true;
        }else{
          if($i==0){
            $line1=$line;
          }
          $stream.=$line;
          $splitted_line=split(":",$line);
          $this->header_array[$splitted_line[0]]=$splitted_line[1];
          $i++;
        }
      }
      fclose ($fp);

      $this->header_stream=$stream;

      $splitted_stream=split(" ",$line1);

      // Getting status code and description of the URL
      $this->code=$splitted_stream[1];
      $this->code_desc=$splitted_stream[2];
      if(count($splitted_stream)>3){
        for($i=3;$i<count($splitted_stream);$i++){
          $this->code_desc.=" ".$splitted_stream[$i];
        }
      }
      // Cleaning up for n and r
      $this->code_desc=preg_replace("[\n]","",$this->code_desc);
      $this->code_desc=preg_replace("[\r]","",$this->code_desc);

      // Getting Http Version
      $http_array=split("/",$splitted_stream[0]);
      $this->http_version=$http_array[1];
      }
  }

  /**
  * Sets the timeout for getting header data from server
  * @param int $seconds time for timeout in seconds
  * @desc Sets the timeout for getting header data from server
  */
  function set_timeout($seconds){
    $this->timeout=$seconds;
  }
}
?>

复制代码 代码如下:

<?php 
include("url.class.php");
$url=new url("[url]http://www.phpNet.cn/[/url]");

echo $url->get_header_stream();
$headers=$url->get_headers();

echo $headers['Server'];

echo $url->get_content();
echo "URL: <b>".$url->get_url()."</b><br>n";
echo "URL Host: ".$url->get_url_host()."<br>n";
echo "URL Path: ".$url->get_url_path()."<br>n<br>n";

echo "Statuscode: ".$url->get_statuscode()."<br>n";
echo "Statuscode description: ".$url->get_statuscode_desc()."<br>n";
echo "HTTP Version: ".$url->get_info_http_version()."<br>n";
echo "Server: ".$url->get_info_server()."<br>n";
echo "Content Type: ".$url->get_info_content_type()."<br>n";
echo "Date: ".$url->get_info_date()."<br>n<br>n";

echo "WHOLE HEADERS:<br>n";
echo $url->get_header_stream();
?>

相关文章

  • PHP实现使用优酷土豆视频地址获取swf播放器分享地址

    PHP实现使用优酷土豆视频地址获取swf播放器分享地址

    这篇文章主要介绍了PHP实现使用优酷土豆视频地址获取swf播放器分享地址,即分析优酷土豆的视频页面地址,从而获得对应的swf播放器分享地址,需要的朋友可以参考下
    2014-06-06
  • Yii核心组件AssetManager原理分析

    Yii核心组件AssetManager原理分析

    这篇文章主要介绍了Yii核心组件AssetManager原理分析,较为详细的分析了AssetManager组件的原理与实现过程,有助于深入了解yii框架的特性,需要的朋友可以参考下
    2014-12-12
  • php实现购物车产品删除功能(2)

    php实现购物车产品删除功能(2)

    这篇文章主要为大家详细介绍了php实现购物车产品删除功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • php无限遍历文件夹示例分享

    php无限遍历文件夹示例分享

    这篇文章主要介绍了php无限遍历文件夹示例,需要的朋友可以参考下
    2014-03-03
  • PHP CURL中传递cookie的方法步骤

    PHP CURL中传递cookie的方法步骤

    这篇文章主要介绍了PHP CURL中传递cookie的方法步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-05-05
  • PHP时间和日期函数详解

    PHP时间和日期函数详解

    php函数的多样化和功能相近真是一大特点,同一个应用可以用多种函数实现,这恐怕也是开源的一个弊端了;通过对PHP时间函数的系统学习,充分理解了时间戳和时区的概念(这个真的很重要),有需要的小伙伴可以参考下。
    2015-05-05
  • php使用正则表达式提取字符串中尖括号、小括号、中括号、大括号中的字符串

    php使用正则表达式提取字符串中尖括号、小括号、中括号、大括号中的字符串

    PHP使用正则表达式提取字符串中尖括号<>、小括号()、中括号[]、大括号{}中的字符示例,需要的朋友可以参考下
    2014-04-04
  • PHP实现类似题库抽题效果

    PHP实现类似题库抽题效果

    这篇文章主要介绍了PHP实现类似题库抽题效果,通过一个简单的小例子给大家介绍的非常详细,需要的朋友参考下吧
    2018-08-08
  • Yii2针对游客、用户防范规则和限制的解决方法分析

    Yii2针对游客、用户防范规则和限制的解决方法分析

    这篇文章主要介绍了Yii2针对游客、用户防范规则和限制的解决方法,简单分析了Yii2对于游客、用户防范规则和限制的原理与相应的设置方法,需要的朋友可以参考下
    2016-10-10
  • PHP HTTP 认证实例详解

    PHP HTTP 认证实例详解

    这篇文章主要介绍了PHP HTTP 认证实例详解的相关资料,这里附有实现代码,及对认证的知识做一个详细的介绍说明,需要的朋友可以参考下
    2016-11-11

最新评论