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['host'], 80,$errno, $errstr, 30); fputs($fp,"GET {$info['path']} HTTP/1.1\r\n"); fputs($fp, "Host: {$info['host']}\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 = 'http://www.test.com/images/test.jpg'; if( @fopen( $url, 'r' ) ) { echo 'File Exits'; } else { echo 'File Do Not Exits'; } ?>
2. CURL-Methode:
<?php $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 '文件不存在'; } ?>
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:
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!