Heim  >  Artikel  >  Backend-Entwicklung  >  PHP ermittelt, ob das Remote-Image aufgerufen werden kann

PHP ermittelt, ob das Remote-Image aufgerufen werden kann

php中世界最好的语言
php中世界最好的语言Original
2018-05-21 11:16:202193Durchsuche

Dieses Mal bringe ich Ihnen PHP, um festzustellen, ob ein Remote-Image aufgerufen werden kann. Was sind die Vorsichtsmaßnahmen für PHP, um festzustellen, ob ein Remote-Image aufgerufen werden kann? Schauen Sie mal rein.

Hinweis: Beim Erstellen einer Bildvorschau bin ich auf ein Problem gestoßen, nämlich festzustellen, ob die Remote-Datei existiert (nicht auf demselben Server).

Beispiele, mehrere Methoden, um festzustellen, ob Remote-Bilder vorhanden sind.

<?php
//方法一
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;
}
//方法二
function file_exists2($url)
{
if(file_get_contents($url,0,null,0,1))
return 1;
else
return 0;
}
//方法三
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
}

Codebeschreibung:
Methode eins gibt FALSE zurück, unabhängig davon, ob das Bild vorhanden ist;
Methode zwei, machbar unter Windows, gibt TRUE zurück, unabhängig davon, ob das Bild unter LINUX vorhanden ist ;
Methode drei sollte am besten geeignet sein
Außerdem gibt es Effizienzprobleme mit der get_headers()-Methode und es wird empfohlen, diese Lösung nicht zu verwenden.

fsockopen-Version:

<?php
$url = "http://www.baidu.com/img/baidu_sylogo1.gif";
    $info = parse_url($url);
     $fp = fsockopen($info[&#39;host&#39;], 80,$errno, $errstr, 30);
    fputs($fp,"GET {$info[&#39;path&#39;]} HTTP/1.1\r\n");
    fputs($fp, "Host: {$info[&#39;host&#39;]}\r\n");
    fputs($fp, "Connection: close\r\n\r\n");
    $headers = array();
    while(!feof($fp)) {
    $line = fgets($fp);
    if($line != "\r\n") {
    $headers[] = $line;
    }else {
    break;
    }
    }
    echo "<pre class="brush:php;toolbar:false">";
    print_r($headers);

Verwenden Sie den http-Statuscode , um festzustellen, ob die Datei vorhanden ist. Beispielsweise bedeuten die Antworten 302, 301, 404 usw., dass dies der Fall ist nicht vorhanden. Wenn es 200, 304 usw. ist, kann es die Datei als vorhanden behandeln.
1. fopen()-Methode:

<?php
    $url = &#39;http://www.test.com/images/test.jpg&#39;;
      if( @fopen( $url, &#39;r&#39; ) )
    {
        echo &#39;File Exits&#39;;
    }
    else
    {
        echo &#39;File Do Not Exits&#39;;
    }
    ?>

2. CURL-Methode:

<?php
    $url2 = &#39;http://www.test.com/test.jpg&#39;;
       $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 &#39;文件不存在&#39;;
    }
?>

Ich glaube, Sie haben die Methode beherrscht, nachdem Sie den Fall in diesem Artikel gelesen haben Achten Sie auf andere verwandte Themen im chinesischen PHP-Website-Artikel!

Empfohlene Lektüre:

Detaillierte Erläuterung der Schritte zur Verwendung der PHP-Array-Funktion shuffle() und der Zufallsfunktionen array_rand()

Verwendung der PHP-Array-Suchfunktion Zusammenfassung der Methoden

Das obige ist der detaillierte Inhalt vonPHP ermittelt, ob das Remote-Image aufgerufen werden kann. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn