URL が存在し、応答が 404 でないことを確認する最良の方法は何ですか?
5 に答える
使用できますget_headers($url)
マニュアルの例 2 :
<?php
// By default get_headers uses a GET request to fetch the headers. If you
// want to send a HEAD request instead, you can do so using a stream context:
stream_context_set_default(
array(
'http' => array(
'method' => 'HEAD'
)
)
);
print_r(get_headers('http://example.com'));
// gives
Array
(
[0] => HTTP/1.1 200 OK
[Date] => Sat, 29 May 2004 12:28:14 GMT
[Server] => Apache/1.3.27 (Unix) (Red-Hat/Linux)
[Last-Modified] => Wed, 08 Jan 2003 23:11:55 GMT
[ETag] => "3f80f-1b6-3e1cb03b"
[Accept-Ranges] => bytes
[Content-Length] => 438
[Connection] => close
[Content-Type] => text/html
)
最初の配列要素には、HTTP 応答ステータス コードが含まれます。それを解析する必要があります。
get_headers
この例の関数は HTTP HEAD リクエストを発行することに注意してください。これは、URL の本文をフェッチしないことを意味します。これは、本体も返す GET リクエストを使用するよりも効率的です。
また、デフォルトのコンテキストを設定することで、http ストリーム コンテキストを使用する後続の呼び出しで HEAD リクエストが発行されるようになることにも注意してください。そのため、完了したら GET を再度使用するようにデフォルトのコンテキストをリセットしてください。
PHP は変数 $http_response_headerも提供します
配列は関数
$http_response_header
に似ていget_headers()
ます。HTTP ラッパーを使用する$http_response_header
と、HTTP 応答ヘッダーが取り込まれます。$http_response_header
ローカルスコープで作成されます。
リモート リソースのコンテンツをダウンロードする場合、2 つの要求 (リソースが存在するかどうかを確認するための要求とリソースを取得するための要求) を実行する必要はありません。その場合は、次のようなものを使用file_get_contents
してコンテンツを取得し、変数からヘッダーを調べます。