2017-05-11 9 views
1

私は以下のコードを使用して、ディレクトリ内のすべてのjpgを表示しています。ディレクトリからの画像を表示し、同じ名前のビデオへのリンク

$dirname = "var/www/media/"; 
$images = glob($dirname."*.jpg"); 

foreach($images as $image) { 
    echo '<img src="'.$image.'" /><br />'; 
} 

同じディレクトリに同じ名前の映画があります。例:

ls var/www/media 
Aliens.mpg 
Aliens.jpg 
Simsons.avi 
Simsons.jpg 

各jpgイメージをクリックして、対応するビデオファイルにリンクする必要があります。

簡単な方法はありますか?

+0

Iすべてのビデオに異なる拡張機能があるので、ビデオの拡張子を知らなくてもそれを実行できるとは思わないでください。 –

+0

しかし、私はファイル名を調べて 'filename(not jpg)'と言うことができました。それは私の考えでしたが、それをどうやって行うのか分かりません。 – MikeSkril

+0

画像と同じループ内で動画をループすると、各値から動画/画像を確認できる拡張子を取得できるようになります。 – andre3wap

答えて

2

ここに行ってください!

NOTE
1)は、ファイル名が同じであることを確認してください。
2)extファイルを変数$imgExts$vidExtsに追加できます。

<?php 
$files = glob("media/*.*"); 
$vid = NULL; 

$imgExts = array("gif", "jpg", "jpeg", "png", "tiff", "tif"); 
$vidExts = array("mp4", "mpg", "avi", "mk4", "ogg", "3gp"); 

for ($i=0; $i<count($files); $i++) { 
    $image = $files[$i]; 
    $urlExt = pathinfo($files[$i], PATHINFO_EXTENSION); 

    if (in_array($urlExt, $imgExts)) { 
    for ($j=0; $j<count($files); $j++) { 
     $urlExt2 = pathinfo($files[$j], PATHINFO_EXTENSION); 
     if (in_array($urlExt2, $vidExts)) { 
     if (strcmp($urlExt, $urlExt2) == 0) { 
      $vid=$files[$j]; 
     } 
     } 
    } 

    echo '<a href="'.$vid .'"><img src="'.$image .'" />'."<br /></a>"; 
    }   
} 

UPDATE:任意のファイルが見つからない場合には、エラーが表示されます

(すなわち、画像、ビデオ、またはその逆のために見つからない場合)

<?php 
$x=1; // initially giving value for x=1 
$files = glob("media/*.*"); 
$vid=NULL; 
$vidf=$files; //making copy of files array 





$imgExts = array("gif", "jpg", "jpeg", "png", "tiff", "tif"); 
$vidExts = array("mp4", "mpg", "avi", "mk4", "ogg", "3gp"); 

for ($i=0; $i<count($files); $i++) { 
    $image = $files[$i]; 


$urlExt = pathinfo($files[$i], PATHINFO_EXTENSION); 

    if(in_array($urlExt,$imgExts)){ 
     for($j=0; $j<count($files); $j++){ 
      $urlExt2 = pathinfo($files[$j], PATHINFO_EXTENSION); 
      if(in_array($urlExt2,$vidExts)){ 

       if(strcmp(pathinfo($files[$i], PATHINFO_FILENAME),pathinfo($files[$j], PATHINFO_FILENAME))==0){ 
       $vid=$files[$j]; 
       $x=0; // put the value of x=0 if video for that image found! 


     unset($vidf[array_search($vid , $vidf)]); // search & delete video from array with have images 


       } 
      } 
     } 





     if($x==0) 
     echo '<a href="'.$vid .'"><img src="'.$image .'" />'."<br /></a>"; 

     else if($x==1){  //check if image have the video 
     echo 'Video for Image <b>', pathinfo($image , PATHINFO_FILENAME),'.',pathinfo($image , PATHINFO_EXTENSION), ' </b>Not Found!<br>'; 
     $x=0;} 
} 
} 

    foreach ($vidf as $vidf) { // show let out videos who's images not found 

     $urlExt2 = pathinfo($vidf, PATHINFO_EXTENSION); 
      if(in_array($urlExt2,$vidExts)){ 
    echo "Image of the Video <b> ",pathinfo($vidf , PATHINFO_FILENAME),'.', pathinfo($vidf , PATHINFO_EXTENSION),'</b> Not found!' ; 
    echo '<br>'; 
      } 
} 


?> 
+0

すごいよ!魅力的な作品!あなたの助けをありがとう! – MikeSkril

+0

私は、ペアが見つからない場合、リストが間違っていることに気付きました。 simsons.aviは存在するが、simsons.jpgは存在しないとしましょう。それをキャッチする(ファイルをスキップしてメッセージを投げる)方法はありますか? – MikeSkril

+0

@MikeSkril遅く返事を申し訳ありません...更新コードを確認してください! –

関連する問題