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

仮定$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 に答える
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 に答える