HTTP で Web ページの内容を取得するには file_get_contents() で可能ですが、サーバーが 404 などのエラーコードを返しても通常の file_get_contents() は false を返すだけでエラーの内容がわかりません。
そこで、stream_context_create() を使って ignore_errors を true にセットするとエラー時であっても取得することができます。
<?php $url = 'http://example.com'; $options = array( 'http' => array('ignore_errors' => true) ); $context = stream_context_create($options); $result = @file_get_contents($url, false, $context); $code = 0; if($result){ $pattern='#\AHTTP/\d+\.\d+ (\d+) (.*)\E#'; preg_match($pattern, $http_response_header[0], $matches); if(isset($matches[1])) $code = (int)$matches[1]; } echo $code;
結果:
200
取得したヘッダーは $http_response_header という配列変数に自動的に格納されます。
上の例では正規表現でレスポンスコードの数字を取り出して出力しています。
URL 自体が誤っていてサーバーに辿りつけない場合は file_get_contents は false を返すので「@」を使って Warning エラーを抑制しています。
参考:
http://php.net/manual/ja/function.file-get-contents.php
http://php.net/manual/ja/function.stream-context-create.php
Similar Posts:
- [PHP]ZipArchiveクラスを使ったファイルのZip圧縮と展開(解凍)
- [PHP]エラーの発生箇所を特定する手法
- [PHP]ひらがな・カタカナをローマ字に変換する
- [PHP]ソケット接続(fsockopen)でメール受信(POP3)
- 海外の技術系掲示板に英語で質問する際の文例・定型文
- [PHP]ユーザー定義関数の出力結果を任意の変数に格納する
- [PHP]文字化けせずにCSVファイルを読み込み、配列に変換する
- [PHP][JS, Ajax]郵便番号を住所に変換する