ホームページ >バックエンド開発 >PHPチュートリアル >PHP にリモート イメージが存在するかどうかを確認する方法

PHP にリモート イメージが存在するかどうかを確認する方法

WBOY
WBOYオリジナル
2016-07-25 09:13:081018ブラウズ

注: 画像のプレビューを作成するときに、リモート ファイルが (同じサーバー上にない) 存在するかどうかを確認するという問題が発生しました。

リモート画像が存在するかどうかを判断するための複数の方法の例。

  1. //方法1

  2. function file_exists($url)
  3. {
  4. $ch =curl_init();
  5. curl_setopt($ch,curlopt_url,$url);
  6. curl_setopt($ch,curlopt_nobody, 1); // ダウンロードしません
  7. curl_setopt($ch,curlopt_failonerror, 1);
  8. curl_setopt($ch,curlopt_returntransfer, 1);

  9. if(curl_exec) ( $ch)!==false)

  10. return true;
  11. else
  12. return false;
  13. }

  14. //方法 2

  15. function file_exists2($url)
  16. {
  17. if(file_get_contents($ url ,0,null,0,1))
  18. return 1;
  19. else
  20. return 0;
  21. }
  22. //メソッド 3
  23. function file_exists($url) {
  24. $curl =curl_init($url);
  25. // Not取得 Return data
  26. curl_setopt($curl, CURLOPT_NOBODY, true);
  27. //リクエストを送信
  28. $result =curl_exec($curl);
  29. $found = false;
  30. //リクエストが送信されない場合、リクエストは失敗します
  31. if ( $result !== false) {
  32. // http レスポンス コードが 200 であるかどうかを再度確認します
  33. }

コードをコピー

コードの説明: 方法 1 は、画像が存在するかどうかに関係なく、FALSE を返します。 方法 2 は、Windows では、画像が存在するかどうかに関係なく、TRUE を返します。 方法 3 が最も適しています。 さらに: get_headers() メソッドには効率の問題があるため、この解決策は使用しないことをお勧めします。

fsockopen バージョン:

  1. $url = "http://www.baidu.com/img/baidu_sylogo1.gif";

  2. parse_url($url);

  3. $fp = fsockopen($info['host'], 80,$errno, $errstr, 30);
  4. fputs($fp,"GET {$info['path']} HTTP/ 1.1rn");
  5. fputs($fp, "ホスト: {$info['host']}rn");
  6. fputs($fp, "接続: より近いnrn");
  7. $headers = array();
  8. while (!feof($fp)) {
  9. $line = fgets($fp);
  10. if($line != "rn") {
  11. $headers[] = $line;
  12. }else {
  13. Break;
  14. }
  15. }

  16. 例えば、応答 302、301、404 などはすべてファイルが存在しないことを意味し、200、304 などの場合はファイルが存在するとみなします。 1. fopen() メソッド:

$url = 'http://www.test.com/images/test.jpg';

fopen( $url, 'r' ) )

{

echo 'ファイルが終了';
}
else
    {
  1. echo 'ファイルが終了しない';
  2. }
  3. ?>

  4. Copyコード
  5. 2、CURL メソッド:

$url2 = 'http://www.test.com/test.jpg';

);

$timeout = 10;

curl_setopt($ch,CURLOPT_URL,$url2);
curl_setopt($ch,CURLOPT_HEADER,1);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch,CURLOPT_CONNECTTIMEOUT, $timeout);

  1. $contents =curl_exec($ch);

  2. //echo $contents;
  3. if (preg_match("/404/", $contents)){
  4. echo 'file存在しません';
  5. }
  6. ?>

  7. コードをコピー
  8. リモートイメージが存在するかどうかを判断するために上記で紹介した方法と例は、私が最近見た中で最も実用的で実用的なものです。リモート ファイルを検出するための最も包括的な例なので、Programmer's Home の友人全員にお勧めします。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。