以前に、PHP を使用してリモート ファイルが存在するかどうかを確認するプロセスについて説明しましたが、いずれも fopen、sockt、およびcurl 関数を使用してリモート ファイルが存在するかどうかを確認する方法を紹介します。さらに詳しく知りたい場合は、友達が参照してください。
まず get_headers() 関数について簡単に理解しましょう
get_headers() は、HTTP リクエストに応じてサーバーから送信されたヘッダーを含む配列を返します。
get_headers: HTTP リクエストに対するサーバー応答を送信します
get_headers(文字列URL[リンク形式])
get_headers() はサーバーの HTTP リクエストを配列として返します。実行に失敗した場合は、FALSE とエラー レベル E_WARNING が返されます。
オプションのパラメータを 1 に設定すると、get_headers() はシステムの応答速度を分析し、配列にキーを設定できます。
注: この関数を使用するには、php.ini でallow_url_fopen = On に設定する必要があります
例
コードは次のとおりです |
コードをコピー |
$url = 'http://www.example.com';
print_r(get_headers($url));
print_r(get_headers($url, 1));
?>
戻り値
配列
(
[0] => HTTP/1.1 200 OK
[1] => 日付: 2004 年 5 月 29 日土曜日 12:28:13 GMT
[2] => サーバー: Apache/1.3.27 (Unix) (Red-Hat/Linux)
[3] => 最終更新日: 2003 年 1 月 8 日水曜日 23:11:55 GMT
[4] => Eタグ: "3f80f-1b6-3e1cb03b"
[5] => 受け入れ範囲: バイト
[6] => コンテンツの長さ: 438
[7] => 接続: 閉じる
[8] => コンテンツタイプ: text/html
)
配列
(
[0] => HTTP/1.1 200 OK
[日付] => 2004年5月29日(土) 12:28:14 GMT
[サーバー] => Apache/1.3.27 (Unix) (Red-Hat/Linux)
[Last-Modified] => 2003 年 1 月 8 日水曜日 23:11:55 GMT
[ETag] =>「3f80f-1b6-3e1cb03b」
[Accept-Ranges] => バイト
[コンテンツの長さ] => 438
[接続] =>閉じる
[Content-Type] => text/html
)
|
例
コードは次のとおりです |
コードをコピー |
//リモートファイルが存在するかどうかを確認します
関数リモートファイル_exists($url) {
$executeTime = ini_get('max_execution_time');
ini_set('max_execution_time', 0);
$headers = @get_headers($url);
ini_set('max_execution_time', $executeTime);
if ($headers) {
$head =explode(' ', $headers[0]);
If ( !emptyempty($head[1]) && intval($head[1])
}
false を返します。
}
例2
重定方向を除外する例:
代码如下 |
复制幣 |
/**
* リダイレクトなしで、HTTP リクエストに応じてサーバーから送信されたすべての実際のヘッダーを取得します
* リダイレクトせずにヘッダーを取得します
*/
function get_real_headers($url,$format=0,$follow_redirect=0) {
if (!$follow_redirect) {
// 新しいデフォルトオプションを設定します
$opts = array('http' =>
array('max_redirects'=>1,'ignore_errors'=>1)
);
stream_context_get_default($opts);
}
//ヘッダーを取得します
$headers=get_headers($url,$format);
// デフォルトのオプションを復元します
if (isset($opts)) {
$opts = array('http' =>
array('max_redirects'=>20,'ignore_errors'=>0)
);
stream_context_get_default($opts);
}
//戻る
$headers を返します;
} |
http://www.bkjia.com/PHPjc/445281.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/445281.html技術記事以前我有讲过程php 判断远程文件存否的文章,那里都介绍利用fopen,sockt,curl関数数来实现检查远程文件存否了,下面我再介绍利用...
|