Php 显示目录中的图像并链接到同名视频

Php 显示目录中的图像并链接到同名视频,php,html,Php,Html,我使用下面的代码来显示目录中的所有jpg $dirname = "var/www/media/"; $images = glob($dirname."*.jpg"); foreach($images as $image) { echo '<img src="'.$image.'" /><br />'; } 我需要每个jpg图像是可点击的,链接到相应的视频文件 有没有简单的方法 给你 注意 1) 确保文件名相同 2) 您可以在变量$imgExts和$vidExt

我使用下面的代码来显示目录中的所有jpg

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

foreach($images as $image) {
    echo '<img src="'.$image.'" /><br />';
}
我需要每个jpg图像是可点击的,链接到相应的视频文件

有没有简单的方法

给你

注意
1) 确保文件名相同
2) 您可以在变量
$imgExts
$vidExts
中添加更多的ext文件

<?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>";
  }        
}

我不认为你可以在不知道视频扩展名的情况下做这件事,因为每个视频都有不同的扩展名。但是我可以查找文件名并说
文件名。(不是jpg)
这是我的想法,但我不知道如何做。如果你在与图像相同的循环中循环视频,会更容易,这样,您就可以从每个值中获取扩展,以验证哪些是视频/图像…您是否有特定的扩展,或者您不知道这些扩展是什么?我的意思是你有视频扩展的列表吗?嗯,有很多不同的扩展。太棒了!工作起来很有魅力!非常感谢你的帮助!我意识到,如果缺少一对,列表将不正确。假设simsons.avi存在,但simsons.jpg不存在。有没有办法捕捉到这个消息(可能跳过文件并抛出一条消息)?@MikeSkril很抱歉没有及时回复。。。检查更新代码!
<?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>";
  }        
}
<?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>';
            }
} 


?>