サンプル・プログラムの実行例
サンプル・プログラム
url_exists.php | サンプル・プログラム本体。 |
解説:HTTPステータスを取得する
126: /**
127: * HTTPステータスを取得する
128: * @param string $url 対象URL
129: * @return list(int 番号/FALSE, string メッセージ)
130: */
131: function getHTTPstatus($url) {
132: $curl = curl_init();
133: curl_setopt($curl, CURLOPT_URL, $url);
134: curl_setopt($curl, CURLOPT_HEADER, TRUE);
135: curl_setopt($curl, CURLOPT_NOBODY, TRUE);
136: curl_setopt($curl, CURLOPT_SSL_VERIFYPEER , FALSE); //証明書は無視
137: curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE); //結果を文字列で
138: curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE); //結果を文字列で
139: $data = curl_exec($curl);
140: curl_close($curl);
141:
142: $n = preg_match("/^(HTTP\/[0-9\.]+) ([0-9]+) (.+)/i", $data, $arr);
143:
144: if (! isset($arr[2])) $arr[2] = FALSE;
145: if (! isset($arr[3])) $arr[3] = '';
146: $res = array((int)$arr[2], (string)$arr[3]);
147:
148: return $res;
149: }
PHPでは cURLライブラリを利用することで、HTTP ステータスを取得することができる。
これを行っているのがユーザー関数 getHTTPstatus である。
関数 curl_init によって cURL ライブラリの使用を宣言し、関数 curl_setopt にパラメータを格納し、関数 curl_exec で実行する。
戻り値として HTTP レスポンスが代入されるので、関数 preg_match を利用してHTTPステータスを抜き出す。
解説:URLの存在チェック
151: /**
152: * URLの存在チェック
153: * @param string $url チェックするURL
154: * @return bool TRUE/FALSE
155: */
156: function url_exists($url) {
157: list($num, $msg) = getHTTPstatus($url);
158: $res = FALSE;
159:
160: //HTTPステータスが 200~300番台なら成功
161: if (($num >= 200) && ($num < 400)) $res = TRUE;
162:
163: return $res;
164: }
HTTPステータスが200番台または300番台であれば、何らかの形でページは存在する。それ以外であれば FALSE を返す。
参考サイト
- HTTP レスポンスステータスコード:MSDN web docs
- PHPでURL上のコンテンツを読み込む:ぱふぅ家のホームページ