サンプル・プログラムの実行例

サンプル・プログラム
url_exists.php | サンプル・プログラム本体。 |
解説:HTTPステータスを取得する
0126: /**
0127: * HTTPステータスを取得する
0128: * @param string $url 対象URL
0129: * @return list(int 番号/FALSE, string メッセージ)
0130: */
0131: function getHTTPstatus($url) {
0132: $curl = curl_init();
0133: curl_setopt($curl, CURLOPT_URL, $url);
0134: curl_setopt($curl, CURLOPT_HEADER, TRUE);
0135: curl_setopt($curl, CURLOPT_NOBODY, TRUE);
0136: curl_setopt($curl, CURLOPT_SSL_VERIFYPEER , FALSE); //証明書は無視
0137: curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE); //結果を文字列で
0138: curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE); //結果を文字列で
0139: $data = curl_exec($curl);
0140: curl_close($curl);
0141:
0142: $n = preg_match("/^(HTTP\/[0-9\.]+) ([0-9]+) (.+)/i", $data, $arr);
0143:
0144: if (! isset($arr[2])) $arr[2] = FALSE;
0145: if (! isset($arr[3])) $arr[3] = '';
0146: $res = array((int)$arr[2], (string)$arr[3]);
0147:
0148: return $res;
0149: }

PHP では cURLライブラリを利用することで、HTTP ステータスを取得することができる。
これを行っているのがユーザー関数 getHTTPstatus である。
関数 curl_init によって cURL ライブラリの使用を宣言し、関数 curl_setopt にパラメータを格納し、関数 curl_exec で実行する。
戻り値として HTTP レスポンスが代入されるので、関数 preg_match を利用して HTTP ステータスを抜き出す。
解説:URLの存在チェック
0151: /**
0152: * URLの存在チェック
0153: * @param string $url チェックするURL
0154: * @return bool TRUE/FALSE
0155: */
0156: function url_exists($url) {
0157: list($num, $msg) = getHTTPstatus($url);
0158: $res = FALSE;
0159:
0160: //HTTPステータスが 200~300番台なら成功
0161: if (($num >= 200) && ($num < 400)) $res = TRUE;
0162:
0163: return $res;
0164: }
HTTP ステータスが 200番台または 300番台であれば、何らかの形でページは存在する。それ以外であれば FALSE を返す。
参考サイト
- HTTP ステータスコード:vaio's HomePage
- PHP で URL 上のコンテンツを読み込む:ぱふぅ家のホームページ