Maison  >  Article  >  développement back-end  >  PHP détermine si l'image distante peut être appelée

PHP détermine si l'image distante peut être appelée

php中世界最好的语言
php中世界最好的语言original
2018-05-21 11:16:202243parcourir

Cette fois, je vais vous apporter PHP pour déterminer si une image distante peut être appelée. Quelles sont les précautions pour que PHP détermine si une image distante peut être appelée. Ce qui suit est un cas pratique, voyons. jetez un oeil.

Remarque : lors de la création d'un aperçu d'image, j'ai rencontré un problème qui consiste à déterminer si le fichier distant existe (pas le même serveur).

Exemples, plusieurs méthodes pour déterminer si des images distantes existent.

<?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
}

Description du code :
Méthode 1, renvoie FALSE, que l'image soit présente ou non.
Méthode 2, réalisable sous Windows, renvoie VRAI, que l'image soit présente ou non ; ou pas sous LINUX ;
La méthode 3 devrait être la plus appropriée
De plus : Il y a des problèmes d'efficacité avec la méthode get_headers(), et il est recommandé de ne pas l'utiliser comme cette solution.

version fsockopen :

<?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);

Utilisez le code d'état http pour déterminer si le fichier existe. Par exemple, les réponses 302, 301, 404, etc. signifient toutes cela. il n'existe pas. S'il s'agit de 200, 304, etc., cela peut être considéré comme une existence de fichier.
1. Méthode fopen() :

<?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. Méthode CURL :

<?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;;
    }
?>

Je pense que vous maîtrisez la méthode après avoir lu le cas dans cet article. informations passionnantes, veuillez faire attention à php Autres articles connexes sur le site Web chinois !

Lecture recommandée :

Explication détaillée des étapes d'utilisation de la fonction de tableau php shuffle() et des fonctions aléatoires array_rand()

Utilisation de la fonction de recherche de tableau php Résumé des méthodes

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn