2013-03-18 114 views
0

我周围的工作获取从数据库&显示图像的图像URL在PHP像下面如何检查URL图像是存在或不是在PHP

<?php  

$row['blog_url'] = "http://www.nasa.gov/images/content/711375main_grail20121205_4x3_946-710.jpg"; 

<img src="<?php echo $row['blog_url']; ?>" height="200" width="200" alt="image"/> 

?> 

,但我想显示no_imgae.jpeg如果图像没有得到来自加载指定的网址为BLOG_URL

如果有什么办法找出图像是在PHP中存在或不提前

感谢...

回答

2

此功能将解决你的问题:

function checkRemoteFile($url) 
{ 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL,$url); 
    // don't download content 
    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; 
    } 
} 

只是通过这个functionimage url,如果图像,否则存在false

1
$file = "http://www.nasa.gov/images/content/711375main_grail20121205_4x3_946-710.jpg"; 
$file_headers = @get_headers($file); 
if($file_headers[0] == 'HTTP/1.1 404 Not Found') { 
    $exists = false; 
} 
else { 
    $exists = true; 
} 
+0

如果有什么是'HTTP/1.0'它将返回yes?有更好的方法来检查这一点。此外,这_only_看起来在404s。对于OP案例,重要的是它特别是200的回应。没有重定向,没有授权等 – 2013-03-18 12:55:44

0
<? 
$img = $row['blog_url']; 
$headers = get_headers($img); 
if(substr($headers[0], 9, 3) == '200') { 
?> 
<img src="<?php echo $img; ?>"/> 
<? 
} else { 
?> 
<img src="noimage.jpg"/> 
<? 
} 
?> 
+0

Array([0] => HTTP/1.0 400 Bad Request [1] => Server:AkamaiGHost [2] => Mime-Version:1.0 [3] => Content-Type:text/html [4] =>内容长度:215 [5] =>到期日期:2013年3月18日12:58:50 GMT [6] =>日期:2013年3月18日星期一12:58:50 GMT [7 ] =>连接:关闭) – 2013-03-18 13:01:22

相关问题