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

PHP_PHP チュートリアルでリモート イメージが存在するかどうかを確認するいくつかの方法

WBOY
リリース: 2016-07-13 10:30:44
オリジナル
811 人が閲覧しました

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

コードをコピーします コードは次のとおりです:

//方法 1
function file_exists($url)
{
$ch =curl_init();
curl_setopt($ ch,curlopt_url,$url) ;
curl_setopt($ch,curlopt_nobody, 1); // ダウンロードしないでください
curl_setopt($ch,curlopt_failonerror, 1);
curl_setopt($ch,curlopt_returntransfer, 1);

if( curl_exec($ch)!== false)
return true;
else
return false;
}

//方法 2
function file_exists2($url)
{
if(file_get_contents($url,0,null,0) ,1))
return 1;
else
return 0;
}
//メソッド 3
function file_exists($url) {
$curl =curl_init($url);
//データを取得しません
curl_setopt($ curl, CURLOPT_NOBODY, true);
//リクエストを送信します
$result =curl_exec($curl);
$found = false;
//リクエストが送信されずに失敗した場合
if ($result !== false) {
//http レスポンス コードが 200 かどうかを再度確認します
}

方法 1 は、画像が存在するかどうかに関係なく、FALSE を返します。
方法 2 は、Windows では実行可能であり、LINUX では、画像が存在するかどうかに関係なく、TRUE を返します。
方法 3 が最も適切です。 get_headers() メソッドの効率の問題のため、この解決策としては推奨されません

fsockopen バージョン:

コードをコピーします コードは次のとおりです:
$url = "http://www.baidu.com/img/baidu_sylogo1.gif";

$info = parse_url($url);
$fp = fsockopen($info['host'], 80,$errno, $errstr, 30);
fputs($fp,"GET {$info['path']} HTTP/1.1rn");
fputs($fp , "ホスト: {$info['host']}rn");
fputs($fp, "接続: より近いnrn");
$headers = array();
while(!feof($fp )) {
$line = fgets($fp);
if($line != "rn") {
$headers[] = $line;
Break;
}
}

echo "
" ;
print_r($headers);


httpステータスコードを使用してファイルが存在するかどうかを判断します。たとえば、応答302、301、404などはすべてファイルが存在しないことを意味します。200、304などの場合は、ファイルが存在しないと見なされます。ファイルが存在しています。

fopen() メソッド:


コードをコピーします コードは次のとおりです:
$url = 'http://www.test.com/images/test.jpg';

if( @fopen ($ url, 'r'))
{
echo 'file exits';
コードをコピーします

コードは次のとおりです:


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

$ch =curl_init();
$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 ); $contents =curl_exec($ch); //echo $contents;
if (preg_match("/404 /", $contents)){
echo 'ファイルが存在しません';
}
?>






http://www.bkjia.com/PHPjc/764617.html

www.bkjia.com

tru​​e

http://www.bkjia.com/PHPjc/764617.html

技術記事画像のプレビューを作成しているときに、リモート ファイルが (同じサーバー上にない) 存在するかどうかを確認するという問題が発生しました。 コードは次のとおりです。 コードをコピーします。 コードは次のとおりです。 /...

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート