0

如果 URL 存在/活动,我想添加图像。我自己尝试了很多事情来让它发挥作用,但没有成功。

我想要的是:如果 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 '';  
    }
}

如何让它工作?

4

3 回答 3

0

就我的知识和以往经验而言fopen,外部 URL 需要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;
  }
}
于 2012-05-21T10:17:39.113 回答
0

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

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

更新(为您的 foreach 使用 $key => $value):

foreach ($urlsArray as $url => $img)  {
  if(@fopen($url,'r')){
    echo '<img src="'.$img.'" />';
  }
}
于 2012-05-21T10:13:31.260 回答
0

也许这会有所帮助?:

<?php

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

?>
于 2012-05-21T10:14:21.977 回答