Posted in PHP onJanuary 02, 2007
获取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实现的获取URL信息的类
声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
Reply on: @reply_date@
@reply_contents@