• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

php判断远程图片能否被调用

php 搞代码 4年前 (2022-01-22) 23次浏览 已收录 0个评论

这次给大家带来php判断远程图片能否被调用,php判断远程图片能否被调用的注意事项有哪些,下面就是实战案例,一起来看一下。

说明:在做一个图片预览中图的东西,遇到一个问题,就是要判断远程文件是否存在(不是同一台服务器)。

例子,判断远程图片是否存在的多种方法。

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

代码说明:
方法一,无论图片在不在都是返回FALSE;
方法二,windows下可行,LINUX下无论图片在不在都返加TRUE;
方法三,应该是最合适的
另外:用get_headers() 方法存在效率问题,建议不使用作为此解决方案。

fsockopen版:

<?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>";    print_r($headers);

通过http状态码来判断文件是否存在,比如,响应 302,301,404等都为不存在,如果是200,304,等可以视为文件存在。
1,f6来源gaodaimacom搞#^代%!码网搞gaodaima代码open()方法:

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

2,CURL方法:

<?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 '文件不存在';    }?>

相信看了本文案例你已经掌握了方法,更多精彩请关注搞代码其它相关文章!

推荐阅读:

php数组函数shuffle()与array_rand()随机函数使用步骤详解

php数组查找函数使用方法汇总

以上就是php判断远程图片能否被调用的详细内容,更多请关注搞代码gaodaima其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:php判断远程图片能否被调用
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址