2012-04-23 13 views
0

たとえば、これらのファイルが存在するかどうかを知りたいとします。特定のリソースが存在するかどうかを知る方法?

http://www.stackoverflow.com/favicon.ico 
http://www.stackoverflow.com/reset.css 

をダウンロードしてからダウンロードしてください(明らかにexixtsの場合)。

+3

ダウンロードしてください。失敗すると、存在しません。 – JJJ

+1

ファイルが存在しない場合、404の応答が返されます。それを確認してください。 – binarious

+2

頭に浮かぶのは、ヘッダーをフェッチするだけでcURL NOBODYリクエストを作成することです。その時点でヘッダーが存在し、完全リソースを要求できることがわかります。しかし、もしあなたが全部をダウンロードしようとしたら、 'file_get_contents()'を使って結果を確認してください。 –

答えて

5
<?php 

if(($file = file_get_contents('http://www.stackoverflow.com/favicon.ico'))) { 
    echo "file exists."; 
    file_put_contents('favicon.ico', $file); 
} 
else { 
    echo "File does not exist."; 
} 
+2

+1ワンノート: 'file_get_contents()'は、リクエストが失敗した場合にE_WARNINGエラーを生成します。これは、戻り値の型でこれらの失敗をキャッチすることが目的であるため、エラー抑制演算子を使用できるケースの1つです。 –

+0

@MikeBフェアで十分です。 –

1

これを試してみてください:

<?php 
$ch = curl_init(); 

$url = 'YOUR_URL_HERE'; // the url you want to check 

curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 20); 
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER[ 'HTTP_USER_AGENT' ]); 

// make "HEAD" request 
curl_setopt($ch, CURLOPT_HEADER, true); 
curl_setopt($ch, CURLOPT_NOBODY, true); 

$res = curl_exec($ch); 
$res = explode(' ', substr($res, 0, strpos($res, "\n"))); 

// if 404, file does not exist 
if($res[ 1 ] != 404) { 
    $file = file_get_contents($url); 
} else { 
    // This url does not exist 
    $file = ''; 
} 

curl_close($ch); 
?> 

は、この情報がお役に立てば幸いです。

関連する問題