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

php中世界最好的语言
Libérer: 2023-03-27 07:56:02
original
2262 Les gens l'ont consulté

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
}
Copier après la connexion

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);
Copier après la connexion

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;;
    }
    ?>
Copier après la connexion

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;;
    }
?>
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal