根据URL的存在显示图像

时间:2012-05-21 10:09:08

标签: php image url foreach fopen

我想在网址存在/活动时添加图片。我自己尝试过很多东西,但是没有成功。

我想要的是:如果url1存在则显示image1否则,如果url2存在则显示image2否则等等。

foreach ($urlsArray as $url) {
  if(@fopen($url,'r')){
    echo 'Exist';
  }
  else {
      echo 'Doesnt exist';
  }
}

对不起,我必须更加具体!

$urlArray = array(
'http://www.domain.com/page1.php' => 'images/image1.jpg',
'http://www.domain.com/page2.php' => 'images/image2.jpg', 
etc);

foreach($urlsArray as $url){
    if(@fopen($url,'r')){
        echo '<img src="$image" />' /* if url1 exist show image1, etc */
    }else{
        echo '';  
    }
}

如何让它发挥作用?

3 个答案:

答案 0 :(得分:1)

假设$url = path/to/pic/pic.gif - 意味着url实际上导致要显示的图片

foreach ($urlsArray as $url) {
  if(@fopen($url,'r')){
    echo '<img src="'.$url.'" />';
  }
}

已更新(使用$ key =&gt; $ fore for foreach):

foreach ($urlsArray as $url => $img)  {
  if(@fopen($url,'r')){
    echo '<img src="'.$img.'" />';
  }
}

答案 1 :(得分:0)

也许这会有所帮助?:

<?php

foreach($urlsArray as $url){
    if(!empty(file_get_contents($url))){
        echo "exist";
    }else{
        echo "Doesn\'t exist";  
    }
}

?>

答案 2 :(得分:0)

就我所知和过去的经验fopen而言,外部网址要求allow_url_fopen设置为开启。通常,它将作为部署环境中的安全措施禁用,建议使用某些替代方法(如cURL)检查URL是否存在,并返回http响应代码。然后根据响应代码继续显示或不显示图像。

示例代码:

$url_exists_1 = check_url($url1);
if ($url_exists_1) {
  // show image 1;
}
else {
  // don't;
}
function check_url($url='') {
  if (!function_exists('curl_init')) {
    die("Please enable curl");
  }
  $curl_options_array = array(
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => TRUE,
    CURLOPT_FOLLOWLOCATION => TRUE,
    CURLOPT_MAXREDIRS => 5
  );
  if ($url != '') {
    $ch = curl_init();
    curl_setopt_array($ch, $curl_options_array);
    curl_exec($ch);
    $code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    if ($code == 200) {
      return TRUE;
    }
    else {
      return FALSE;
    }
  } 
  else {
    return FALSE;
  }
}