ホームページ  >  記事  >  バックエンド開発  >  URL情報を取得するPHP実装クラス_PHPチュートリアル

URL情報を取得するPHP実装クラス_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:58:09770ブラウズ

URL情報を取得するクラス

このクラスを使用すると、URLの次の情報を取得できます:

- ホスト
- パス
- ステータスコード (例: 404,200, ...)
- HTTPバージョン
- サーバー
- コンテンツタイプ
- 日付
- URL のヘッダー文字列全体

コードをコピーします コードは次のとおりです:


/**
* URL に関する情報を取得するためのクラス
* @author Sven Wagener <[email]sven.wagener@intertribe.de[/email]>
* @copyright Intertribe 限定
* @PHP 中国語コミュニティ コレクション [url]www 。 phpNet.cn[/url]
* @include Funktion:_include_
*/
クラス url{

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

var $code="";
var $code_desc="";
var $http_version=""; // HTTP バージョンの変数

var $header_stream;
var $header_array;

var $timeout="1";

/**
* クラス URL のコンストラクター
* @param 文字列 $url 完全な URL
* @desc クラス 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();
}

/**
* URL全体を返します
* @return string $url URL全体を返します
* @desc URL全体を返します
  */
function get_url(){
return $this->url;
}

/**
* URL のホストを返します
* @return 文字列 $url_host URL のホスト
* @desc URL のホストを返します
  */
function get_url_host(){
return $this->url_host;
}

/**
* URL のパスを返します
* @return string $url_path URL のパス
* @desc URL のパスを返します
  */
function get_url_path(){
return $this->url_path;
}

/**
* URL のステータス コードを返します
* @return 文字列 $status_code ステータス コード
* @desc URL のステータス コードを返します
  */
function get_statuscode(){
return $this->code;
}

/**
* URL のステータス コードの説明を返します
* @return 文字列 $status_code_desc ステータス コードの説明
* @desc URL のステータス コードの説明を返します
  */
function get_statuscode_desc(){
return $this->code_desc;
}

/**
* サーバーの返されたヘッダーによって URL の http バージョンを返します
* @return 文字列 $http_version http バージョン
* @desc サーバーの返されたヘッダーによって URL の http バージョンを返します
  */
function get_info_http_version(){
return $this->http_version;
}

/**
* 返されたサーバーのヘッダーによって URL のホストのサーバー タイプを返します
* @return string header_array['Server'] サーバーのタイプ
* @desc 返されたサーバーのヘッダーによって URL のホストのサーバー タイプを返します
  */
function get_info_server(){
return $this->header_array['Server'];
}

/**
* サーバーの返されたヘッダーによって URL のホストの日付を返します
* @return string $header_array['Date'] 日付
* @desc サーバーの返されたヘッダーによって URL のホストの日付を返します
  */
function get_info_date(){
return $this->header_array['Date'];
}

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

/**
* サーバーの返されたヘッダーによってコンテンツ タイプを返します
* @return string header_array['Content-Type'] コンテンツ タイプを返します
* @desc サーバーの返されたヘッダーによってコンテンツ タイプを返します
  */
function get_info_content_type(){
return $this->header_array['Content-Type'];
}

/**
* ヘッダーなしで URL のコンテンツを返します
* @return string $content コンテンツ
* @desc ヘッダーなしで URL のコンテンツを返します
  */
function get_content(){
// ウェブページを文字列に取得します
$string = implode ('', file ($this->url));
$string を返す;
}

/**
* コンテンツのない URL のヘッダー全体を返します
* @return 文字列 $header ヘッダー
* @desc コンテンツのない URL のヘッダー全体を返します
  */
function get_header_stream(){
return $this->header_stream;
}

/**
* URL のヘッダー全体を配列で返します
* @return Array $header_array ヘッダーを配列で返します
* @desc URL のヘッダー全体を配列で返します
  */
function get_headers(){
return $this->header_array;
}

}/**&#&*/
関数reffery_headerinfo(){
//ポート80を介して接続用のソケットを開くヘッダーを配置する
$ fp = fsockopen($ this-&gt; url_host、80、$ errno、$ $ errstr、30);
if (!$fp) {
// echo "$errstr ($errno)";
if($errno==0){
$errstr="サーバーが見つかりません";
}
$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;

// ヘッダー文字列の取得とヘッダー配列の作成
$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);

// ステータス コードと 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[$私];
}
}
// n と r のクリーンアップ
$this->code_desc=preg_replace("[n]","",$this->code_desc);
$this->code_desc=preg_replace("[r]","",$this->code_desc);

// HTTP バージョンの取得
$http_array=split("/",$splitted_stream[0]);
$this->http_version=$http_array[1];
}
}

/**
* サーバーからヘッダー データを取得するためのタイムアウトを設定します
* @param int $秒タイムアウトの時間を秒単位で設定します
* @desc サーバーからヘッダー データを取得するためのタイムアウトを設定します
  */
function set_timeout($秒){
$this->timeout=$秒;
}
}
?>

复制代码代码如下:

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

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

echo $headers['サーバー'];

echo $url->get_content();
echo "URL: ".$url->get_url()."
n";
echo "URL Host: ".$url->get_url_host()."
n";
echo "URL パス: ".$url->get_url_path()."
n
n";

echo "ステータスコード: ".$url->get_statuscode()."
n";
echo「ステータスコードの説明:」.$url->get_statuscode_desc()."
n";
echo "HTTP バージョン: ".$url->get_info_http_version()."
n";
echo "サーバー: ".$url->get_info_server()."
n";
echo "コンテンツ タイプ: ".$url->get_info_content_type()."
n";
echo "Date: ".$url->get_info_date()."
n
n";

echo「ヘッダー全体:
n」;
echo $url->get_header_stream();
?>

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/317693.html技術記事取得 URL 情報の種類 この種類を使用すると、次のような URL を取得できます: -Host -Path -Statuscode(eg.404,200,...) -HTTPVersion -Server -ContentType -Date -ThewholeheaderstringoftheU...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。