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

获取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 

* @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

$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;

}

}

?>

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: ".$url->get_url()."
n";

echo "URL Host: ".$url->get_url_host()."
n";

echo "URL Path: ".$url->get_url_path()."
n
n";

echo "Statuscode: ".$url->get_statuscode()."
n";

echo "Statuscode description: ".$url->get_statuscode_desc()."
n";

echo "HTTP Version: ".$url->get_info_http_version()."
n";

echo "Server: ".$url->get_info_server()."
n";

echo "Content Type: ".$url->get_info_content_type()."
n";

echo "Date: ".$url->get_info_date()."
n
n";

echo "WHOLE HEADERS:
n";

echo $url->get_header_stream();

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值