2017-05-30 2 views
0

アップロードされた画像をいくつか表示するホームページがあります。strpos()を使って変数のパスをチェックするには?

私は、データベースからそれを取ると、私は、ディレクトリの問題に起因するURLを確認するためにstrpos()を使用し、それが正常に動作します:

if(strpos($row['cImage'],"http://") === FALSE){ 
    echo "<img src='serintercement/".$row['cImage']."' style='width: 107px; height:102px;' />";  
}else{ 
    echo "<img src='".$row['cImage']."' style='width: 107px; height:102px;' />";  
} 

私がクリックされた画像を表示するページに同じロジックを使用する必要がありますが、それはそれのための変数を持っており、それは書くためのさまざまな方法ですので、私はこの問題を解決するために苦労しています:

<img src='<?php echo $resultData->cImage; ?>'/> 

私は、ディレクトリの問題を修正することはできません。この2番目のコードでも同様にstrpos()を使用できますか?

+0

あなたは '$ row ['cImage']'に対してあなたがしていたように '$ resultData-> cImage'を使いますか? –

+0

はい@SahilGulati。私はこの変数から来るこのイメージがそれがパスのチェックを持っていることを望んでいるので、私は必要に応じてそれを修正することができます – paulocholla

答えて

1

このようにすることができます。

if(strpos($resultData->cImage,"http://") === FALSE){ 
    echo "<img src='serintercement/".$resultData->cImage."' style='width: 107px; height:102px;' />";  
}else{ 
    echo "<img src='".$resultData->cImage."' style='width: 107px; height:102px;' />";  
} 

より良いオプションは、あなたがこのように関数を定義し、これらのcImageの文字列は、データベースから来ている場合は、あなただけのクエリの呼び出しでそれらを修正することができ

checkImage($row['cImage']);//to be called in your first page 
checkImage($resultData->cImage);//to be called in your second page 
function checkImage($image) 
{ 
    if(strpos($image,"http://") === FALSE){ 
     echo "<img src='serintercement/".$image."' style='width: 107px; height:102px;' />";  
    }else{ 
     echo "<img src='".$image."' style='width: 107px; height:102px;' />";  
    } 
} 
1

同様に、オブジェクトのプロパティが設定され、文字列がstrpos()である限り、パスを確認する必要があります。

if(strpos($resultData->cImage,"http://") === FALSE){ 
    echo "<img src='serintercement/".$resultData->cImage."' />";  
}else{ 
    echo "<img src='".$resultData->cImage."' />";  
} 
+0

も完璧に働いた!どうもありがとうございます! – paulocholla

0

それを呼び出すことができます。あなたの「表示」のコードがよりスムーズに読むようになります、あなたのクエリに条件付きのプロセスを移動

SELECT 
    IF(LOCATE('http',`cImage`)!=1,CONCAT('serintercement/',`cImage`),`cImage`) `new_cImage` 
FROM ... 

:あなたはMySQLを使用している場合

たとえば、あなたがこのようなLOCATE()CONCAT()を使用してデータを準備することができ事前にすべての準備が完了しているためです。

それ以外で

、あなたは前とイメージ変数の後に来るのhtmlの部分を繰り返していないことで、あなたのコードをよりDRYにすることができます...

これは、インライン条件(誰とエコーです)このスタイルが好き:

echo "<img src=\"",(strpos($resultData->cImage,"http")===0?'':'serintercement/'),"{$resultData->cImage}\" style=\"width:107px;height:102px;\" />\n"; 

これを分離し、条件付きである:

echo "<img src=\""; 
    if(strpos($resultData->cImage,"http")!==0){ 
     echo 'serintercement/' 
    } 
echo "{$resultData->cImage}\" style=\"width:107px;height:102px;\" />\n"; 

あなたは同じスクリプトでこの複数回行う必要がある場合、これは、関数呼び出しです:私はhttpのために、私は非常に正確にそれが第一の位置から来ていることを確認していたことを確認しています


お知らせ

function fixPath($img){ 
    if(strpos($img,"http")===0){ 
     return $img; 
    } 
    return "serintercement/$img"; 
} 
echo "<img src=\"",fixPath($resultData->cImage),"\" style=\"width:107px;height:102px;\" />\n"; 
文字列にこれらすべての選択肢の中で、私が作っているのはDRYnessです(これはすべてのプログラマーの典型的な追求です)。あなたがそれを実装する方法を選んだのはあなたの個人的な好みになります。

関連する問題