ホームページ  >  記事  >  バックエンド開発  >  phpのget_headers関数を使用してWebサイトを開けるかどうかを確認する方法

phpのget_headers関数を使用してWebサイトを開けるかどうかを確認する方法

WBOY
WBOYオリジナル
2016-06-20 13:02:491198ブラウズ

get_headers() は、HTTP リクエストに応じてサーバーから送信されたヘッダーを含む配列を返す PHP システムレベルの関数です。失敗した場合は FALSE を返し、E_WARNING レベルのエラー メッセージを発行します (リモート ファイルが存在するかどうかを判断するために使用できます)。

関数定義 array get_headers ( string $url [, int $format = 0 ] ) パラメータ url ターゲット URLformat オプションの format パラメータが 1 に設定されている場合、get_headers() は対応する情報を解析し、キー名を設定します配列の。

<p><?php</p>$url='http://www.scutephp.com';<br />print_r(get_headers($url));<br />print_r(get_headers($url,1));<br /><p>?></p>

上記のルーチンの出力は次のようになります:

Array

(
[0] => HTTP/1.1 200 OK
[1] => 日付: 2004 年 5 月 29 日土曜日 12:28:13 GMT
[2] => サーバー: Apache/1.3。 27 (Unix) (Red-Hat/Linux)
[3] => Last-Modified: Wed, 08 Jan 2003 23:11:55 GMT
[4] => ETag: "3f80f-1b6 -3e1cb03b "
[5] => 受け入れ範囲: バイト
[6] => コンテンツの長さ: 438
[7] => 接続: close
[8] = > コンテンツ タイプ: text/html

)

配列

(
[0] => HTTP/1.1 200 OK
[日付] => Sat, 29 May 2004 12:28:14 GMT
[サーバー] => Apache/1.3.27 (Unix) (Red-Hat/Linux)
[最終更新日] => 1 月 8 日水曜日2003 23 :11:55 GMT
[ETag] => "3f80f-1b6-3e1cb03b"
[Accept-Range] => バイト
[Content-Length] => [Connection ] => close
[Content-Type] => text/html

)

php は get_headers 関数をシミュレートします。

具体的なコードは以下の通りです。

<?php<br />if(!function_exists('get_headers')){<br /> function get_headers($url,$format=0){<br /> $url=parse_url($url);<br /> $end="rnrn";<br /> $fp=fsockopen($url['host'],(empty($url['port'])?80:$url['port']),$errno,$errstr,30);<br /> if($fp){<br /> $out="GET / HTTP/1.1rn";<br /> $out.="Host: ".$url['host']."rn";<br /> $out.="Connection: Closernrn";<br /> $var='';<br /> fwrite($fp,$out);<br /> while(!feof($fp)){<br /> $var.=fgets($fp,1280);<br /> if(strpos($var,$end))<br /> break;<br /> }<br /> fclose($fp);<br /> $var=preg_replace("/rnrn.*$/",'',$var);<br /> $var=explode("rn",$var);<br /> if($format){<br /> foreach($var as $i){<br /> if(preg_match('/^([a-zA-Z -]+): +(.*)$/',$i,$parts))<br /> $v[$parts[1]]=$parts[2];<br /> }<br /> return $v;<br /> }else{<br /> return $var;<br /> }<br /> }<br /> }<br />}<br />echo '<pre class="brush:php;toolbar:false">';<br />print_r(get_headers('http://www.scutephp.com/'));

関連記事:PHP + AJAX 複数処理一括pingツール

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。