广

PHP编程

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

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

    2018-10-18 20:39:42 次阅读 稿源:互联网
    零七广告
    获取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();
    ?>

    零七网部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与零七网进行文章共享合作。

    零七广告
    零七广告
    零七广告
    零七广告