PHP显示图像,如果其他状态

PHP显示图像,如果其他状态,php,image,Php,Image,我现在有一个脚本,非常适合我公司资源的FTP类型站点 它显示带有下载链接和文件名的图像。我想做的是,如果文件不是图像(如pdf),则显示占位符图像 下面的代码不正确(if/else语句),但您可以看到我的意图 提前谢谢 <?php // Find all files in that folder $files = glob('files/*'); //$image = // Do a natural case insen

我现在有一个脚本,非常适合我公司资源的FTP类型站点

它显示带有下载链接和文件名的图像。我想做的是,如果文件不是图像(如pdf),则显示占位符图像

下面的代码不正确(if/else语句),但您可以看到我的意图

提前谢谢

<?php

        // Find all files in that folder
        $files = glob('files/*');
        //$image = 

        // Do a natural case insensitive sort, usually 1.jpg and 10.jpg would come next to each other with a regular sort
        natcasesort($files);

        if ($files = array("gif", "jpeg", "jpg", "png");) {
            $images = $file
        } else {
            $images = "http://hg.exbabylon.net/find_fitter/placeholder.jpg";
        }


        // Display images
        foreach($files as $file) {
           echo '<div class="one_half"><img src="' . $images . '" class="images" /></br><h2>' .basename($file). '</h2><a class="download" href="fitter/download.php?file='.base64_encode($file).'"></a></div>';
        }

    ?>

假设您的$files只包含一个文件名+扩展名,即
myimage.png

foreach($files as $file) {
   $split = explode(".", $file);
   $extension = array_pop($split);

   if (in_array($extension, array('gif', 'jpeg', 'jpg', 'png'))) {
      $images = $file;
   } else {
      $images = "http://hg.exbabylon.net/find_fitter/placeholder.jpg";
   }

   //display your image
   echo '<div ...';
}
foreach($files as$file){
$split=explode(“.”,$file);
$extension=array\u pop($split);
if(在数组中($extension,array('gif','jpeg','jpg','png')){
$images=$file;
}否则{
$images=”http://hg.exbabylon.net/find_fitter/placeholder.jpg";
}
//显示您的图像

echo'假设您的$files只包含一个文件名+扩展名,即
myimage.png

foreach($files as $file) {
   $split = explode(".", $file);
   $extension = array_pop($split);

   if (in_array($extension, array('gif', 'jpeg', 'jpg', 'png'))) {
      $images = $file;
   } else {
      $images = "http://hg.exbabylon.net/find_fitter/placeholder.jpg";
   }

   //display your image
   echo '<div ...';
}
foreach($files as$file){
$split=explode(“.”,$file);
$extension=array\u pop($split);
if(在数组中($extension,array('gif','jpeg','jpg','png')){
$images=$file;
}否则{
$images=”http://hg.exbabylon.net/find_fitter/placeholder.jpg";
}
//显示您的图像

echo'把它改成这样

<?php

        // Find all files in that folder
        $files = glob('files/*');

        // Do a natural case insensitive sort, usually 1.jpg and 10.jpg would come next to each other with a regular sort
        natcasesort($files);

        $extensions = array("gif", "jpeg", "jpg", "png");

        // Display images
        foreach($files as $file) {
           $pi - pathinfo($file);
           if(!in_array($pi['extension'], $extensions)) {
              $file = "http://hg.exbabylon.net/find_fitter/placeholder.jpg";
           }

           echo '<div class="one_half"><img src="' . $file . '" class="images" /></br><h2>' .basename($file). '</h2><a class="download" href="fitter/download.php?file='.base64_encode($file).'"></a></div>';
        }

    ?>

将其更改为以下内容

<?php

        // Find all files in that folder
        $files = glob('files/*');

        // Do a natural case insensitive sort, usually 1.jpg and 10.jpg would come next to each other with a regular sort
        natcasesort($files);

        $extensions = array("gif", "jpeg", "jpg", "png");

        // Display images
        foreach($files as $file) {
           $pi - pathinfo($file);
           if(!in_array($pi['extension'], $extensions)) {
              $file = "http://hg.exbabylon.net/find_fitter/placeholder.jpg";
           }

           echo '<div class="one_half"><img src="' . $file . '" class="images" /></br><h2>' .basename($file). '</h2><a class="download" href="fitter/download.php?file='.base64_encode($file).'"></a></div>';
        }

    ?>



$allowed_extensions=数组(“gif”、“jpeg”、“jpg”、“png”);
$files=glob('files/*');
natcasesort($文件);
foreach($files作为$file){
if(!in_数组(end(explode(“.”,$file)),$allowed_扩展名)){
$image=”http://hg.exbabylon.net/find_fitter/placeholder.jpg";
}否则{
$image=$file;
}
echo“
”.basename($file)。“”; }
$allowed_extensions=数组(“gif”、“jpeg”、“jpg”、“png”);
$files=glob('files/*');
natcasesort($文件);
foreach($files作为$file){
if(!in_数组(end(explode(“.”,$file)),$allowed_扩展名)){
$image=”http://hg.exbabylon.net/find_fitter/placeholder.jpg";
}否则{
$image=$file;
}
echo“
”.basename($file)。“”; }
您可以使用正则表达式和
preg\u match
函数:

if (preg_match("/.*\.gif|jpg|jpeg|png$/i", $files)) {
  $images = $file
} else {
  $images = "http://hg.exbabylon.net/find_fitter/placeholder.jpg";
}
另外,请参见


注意:最好检查mime类型(如果可能),因为文件名很容易更改。

您可以使用正则表达式和
preg\u match
函数:

if (preg_match("/.*\.gif|jpg|jpeg|png$/i", $files)) {
  $images = $file
} else {
  $images = "http://hg.exbabylon.net/find_fitter/placeholder.jpg";
}
另外,请参见


注意:最好检查mime类型(如果可能的话),因为文件名很容易更改。

这里有几个问题

  • 请注意比较运算符-您当前正在重新分配此行中的$files数组:

    if ($files = array("gif", "jpeg", "jpg", "png");) {
    
  • 您正在以一种毫无意义的方式将您的
    $files
    数组与另一个数组进行比较。您可能会构建一个单独的$images数组,就像您试图做的那样,但这最好在foreach循环中完成,如:

    foreach($files as $file) {
      $filepath = pathinfo($file);
      if (in_array($filepath['extension'], ('gif', 'jpeg', 'jpg', 'png')) {
        $image = $file;
      } else {
        $image = 'http://hg.exbabylon.net/find_fitter/placeholder.jpg';
      }
    
      echo '<div class="one_half"><img src="' . $images . '" class="images" /></br><h2>' .basename($file). '</h2><a class="download" href="fitter/download.php?file='.base64_encode($file).'"></a></div>';
    }
    

  • 然后可以根据mime类型进行比较,如(2)所示。

    这里有几个问题

  • 请注意比较运算符-您当前正在重新分配此行中的$files数组:

    if ($files = array("gif", "jpeg", "jpg", "png");) {
    
  • 您正在以一种毫无意义的方式将您的
    $files
    数组与另一个数组进行比较。您可能会构建一个单独的$images数组,就像您试图做的那样,但这最好在foreach循环中完成,如:

    foreach($files as $file) {
      $filepath = pathinfo($file);
      if (in_array($filepath['extension'], ('gif', 'jpeg', 'jpg', 'png')) {
        $image = $file;
      } else {
        $image = 'http://hg.exbabylon.net/find_fitter/placeholder.jpg';
      }
    
      echo '<div class="one_half"><img src="' . $images . '" class="images" /></br><h2>' .basename($file). '</h2><a class="download" href="fitter/download.php?file='.base64_encode($file).'"></a></div>';
    }
    

  • 然后,您可以根据mime类型进行比较,如(2)。

    您可以提供
    $files
    对象的转储输出吗?您可以提供
    $files
    对象的转储输出吗?“$extensions=$files=array(“gif”、“jpeg”、“jpg”、“png”);“谁会损坏文件列表,我不好,这是一个输入错误。我更改了它”$extensions=$files=array(“gif”、“jpeg”),”jpg“,”png“;”会损坏文件列表我的错,这是一个打字错误。我更改了它以允许“.jpg”和其他可以使用的大小写组合:
    $file\u extension=strtolower(array\u pop($file\u parts))
    允许“.jpg”和其他可以使用的大小写组合:
    $file\u extension=strtolower(array\u pop($file\u parts))