2021-06-26
get_headers()関数を使用して特定URLのヘッダー情報を取得する
HTTPリクエストに対するレスポンスの内容で、サーバーによって送出された全てのヘッダを取得します。
get_headers()関数の説明
get_headers(string $url, bool $associative = false, resource|null $context = null): array|false
get_headers()は、HTTPリクエストに対するレスポンス内でサーバーによって送られた内容を配列を返します。特定URLの存在確認、疎通確認で使用される関数です。
パラメータ
第1引数:url
取得対象となるURL。
第2引数:associative
associativeパラメータがゼロ以外の値にセットされた場合、get_headers()はレスポンスをパースし、配列のキーをセットします。詳しくはサンプルをご確認ください。
第3引数:context
stream_context_create()関数で作られた有効なコンテキストリソースが指定可能。
サンプルコード
例では、https://www.google.com/ のURLを指定
第2引数(associative)を指定しない場合
第2引数を指定しない、または0
を指定します。
$headers = get_headers('https://www.google.com/');
echo '<pre>';
print_r($headers);
echo '</pre>';
Array
(
[0] => HTTP/1.0 200 OK
[1] => Date: Mon, 21 Jun 2021 02:22:04 GMT
[2] => Expires: -1
[3] => Cache-Control: private, max-age=0
[4] => Content-Type: text/html; charset=ISO-8859-1
[5] => P3P: CP="This is not a P3P policy! See g.co/p3phelp for more info."
[6] => Server: gws
[7] => X-XSS-Protection: 0
[8] => X-Frame-Options: SAMEORIGIN
[9] => Set-Cookie: 1P_JAR=2021-06-21-02; expires=Wed, 21-Jul-2021 02:22:04 GMT; path=/; domain=.google.com; Secure
[10] => Set-Cookie: NID=217=2-S_Z-D11PykJtBlLAVJQeqnBXuIEGb6rLd5c-WIZaCgJFNHWwdYmV2MD8aTjNGcxO1AyZ8zOanTbm4NWkCLSEenG3nvefyQwY5VhwB3IdCzM9JB7ofqYARJa4xubEShY223ymPTG8alHm8IjPGBX-mF6LCJ2qyOdhN9lMxMmpI; expires=Tue, 21-Dec-2021 02:22:04 GMT; path=/; domain=.google.com; HttpOnly
[11] => Alt-Svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000,h3-T051=":443"; ma=2592000,h3-Q050=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000,quic=":443"; ma=2592000; v="46,43"
[12] => Accept-Ranges: none
[13] => Vary: Accept-Encoding
)
第2引数(associative)を指定する場合
第2引数を指定すると、レスポンスをパースし、配列のキーがセットされます。
$headers = get_headers('https://www.google.com/', 1);
echo '<pre>';
print_r($headers);
echo '</pre>';
Array
(
[0] => HTTP/1.0 200 OK
[Date] => Mon, 21 Jun 2021 02:22:04 GMT
[Expires] => -1
[Cache-Control] => private, max-age=0
[Content-Type] => text/html; charset=ISO-8859-1
[P3P] => CP="This is not a P3P policy! See g.co/p3phelp for more info."
[Server] => gws
[X-XSS-Protection] => 0
[X-Frame-Options] => SAMEORIGIN
[Set-Cookie] => Array
(
[0] => 1P_JAR=2021-06-21-02; expires=Wed, 21-Jul-2021 02:22:04 GMT; path=/; domain=.google.com; Secure
[1] => NID=217=4S4kf_S8S7pBEkwqZw4aoGvGVBJhckoRNB64WmEXI0OOl-mW7H8qP6-Dl3zbx797pjN0qPgaUBICBPlZApLTTPt0kPWioL6KZB5J-k_rQNtZKi1uLY9DcRqs36owFy4Jt-vUOcELLFczrHBWatt0hr7vKI0O13ynYs1yheDeljA; expires=Tue, 21-Dec-2021 02:22:04 GMT; path=/; domain=.google.com; HttpOnly
)
[Alt-Svc] => h3=":443"; ma=2592000,h3-29=":443"; ma=2592000,h3-T051=":443"; ma=2592000,h3-Q050=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000,quic=":443"; ma=2592000; v="46,43"
[Accept-Ranges] => none
[Vary] => Accept-Encoding
)
配列で取得できるので、ループで回して添え字を指定し、特定の要素を取りだすなどの使い方が可能です。