PHPでURLの存在チェック

(1/1)
PHP で cURL(Client URL Library)を用いて URL の存在チェックを行うプログラムを作る。関数  file_exists  と異なり、HTTP ステータスを取得することができる。

サンプル・プログラム

サンプル・プログラムの解説:HTTPステータスを取得する

0080: /**
0081:  * HTTPステータスを取得する
0082:  * @param string $url 対象URL
0083:  * @return list(int 番号/FALSE, string メッセージ)
0084: */
0085: function getHTTPstatus($url) {
0086:     $ch = curl_init();
0087:     curl_setopt($ch, CURLOPT_URL, $url);
0088:     curl_setopt($ch, CURLOPT_HEADER, true);
0089:     curl_setopt($ch, CURLOPT_NOBODY, true);
0090:     curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
0091:     $data = curl_exec($ch);
0092:     curl_close($ch);
0093: 
0094:     $n = preg_match("/^(HTTP\/[0-9\.]+) ([0-9]+) (.+)/i", $data$arr);
0095: 
0096:     if (! isset($arr[2]))    $arr[2] = FALSE;
0097:     if (! isset($arr[3]))    $arr[3] = '';
0098:     $res = array($arr[2]$arr[3]);
0099: 
0100:     return $res;
0101: }

クライアント(ブラウザ)が URL を要求した場合、そのドメインが存在していれば、HTTP ステータスと呼ばれるコード番号を返す。通常は 200 だが、ページが見つからないと 404 などが返される。

PHP では cURLライブラリを利用することで、HTTP ステータスを取得することができる。
これを行っているのがユーザー関数 getHTTPstatus である。
関数  curl_init  によって cURL ライブラリの使用を宣言し、関数  curl_setopt  にパラメータを格納し、関数  curl_exec  で実行する。
戻り値として HTTP レスポンスが代入されるので、関数  preg_match  を利用して HTTP ステータスを抜き出す。

サンプル・プログラムの解説:URLの存在チェック

0103: /**
0104:  * URLの存在チェック
0105:  * @param string $url チェックするURL
0106:  * @return bool TRUE/FALSE
0107: */
0108: function url_exists($url) {
0109:     list($num$msg) = getHTTPstatus($url);
0110: 
0111:     $res = FALSE;
0112:     //HTTPステータスが 200~300番台なら成功
0113:     if ($num >= 200 && $num < 400)  $ret = TRUE;
0114: 
0115:     return $ret;
0116: }

ユーザー関数 getHTTPstatus の戻り値、すなわち HTTP ステータスを見て、URL の存在をチェックする。
HTTP ステータスが 200番台または 300番台であれば、何らかの形でページは存在する。それ以外であれば FALSE を返す。

参考サイト

(この項おわり)
header