PHP はリモート ファイルが存在するかどうかを検出します
<?php $url = 'http://example.com'; $hander_array = get_headers ( $url ); if ($header_array [0] == 'HTTP/1.1 200 OK') { echo '文件存在'; } else { echo '文件不存在'; }
上記のコードを簡単に説明してください。 get_headers の機能は、リモート アドレスにアクセスし、サーバーから送信された HTTP ヘッダーを配列の形式で返すことです。 $header[0] はサーバーから返されるステータス コードです (他に何も起こらなければ、ステータス コードが最初に返されるはずです)。
ファイルがリモート サーバーに存在することを確認するには、ファイルにアクセスして返されたステータス コードが「HTTP/1.1 200」であることを確認してください。 OK」で十分です(もちろんステータスコードが「HTTP/1.1 404 Not」でないかどうかで判断することもできます) Found" の場合、ファイルは存在しますが、301、400 などの他のステータス コードがあるため、常に安全ではないと感じます。
<span class="html"><span class="keyword">获取三位HTTP响应码的例子:</span>
</span>
<?php function get_http_response_code($theURL) { $headers = get_headers($theURL); return substr($headers[0], 9, 3); } ?>
?除外リダイレクトの例:
<?php /** * Fetches all the real headers sent by the server in response to a HTTP request without redirects * 获取不包含重定向的报头 */ function get_real_headers($url,$format=0,$follow_redirect=0) { if (!$follow_redirect) { //set new default options $opts = array('http' => array('max_redirects'=>1,'ignore_errors'=>1) ); stream_context_get_default($opts); } //get headers $headers=get_headers($url,$format); //restore default options if (isset($opts)) { $opts = array('http' => array('max_redirects'=>20,'ignore_errors'=>0) ); stream_context_get_default($opts); } //return return $headers; } ?>