仅列出文件下拉列表中的图像文件

时间:2017-07-01 03:34:11

标签: php

我在下面的代码中列出了images文件夹中的所有文件。如何仅列出列表中的某些扩展名,例如jpg,png,gif。

<select name="s1">
  <option value="" selected="selected">-----</option>
    <?php 
       foreach(glob(dirname(__FILE__) . '/images/*') as $filename) {
         $filename = basename($filename);
         echo "<option value='" . $filename . "'>".$filename."</option>";
       }
    ?>
</select>

2 个答案:

答案 0 :(得分:2)

glob()包含2个参数。第二个参数标志的文档显示:

  

GLOB_BRACE - 扩展{a,b,c}以匹配&#39; a&#39;&#39;&#39;&#39;或&#39;&#39;

有关详细信息,请参阅this post

foreach(glob(dirname(__FILE__) . '/images/*.{jpg,png,gif}', GLOB_BRACE) as $filename){
   $filename = basename($filename);
   echo "<option value='" . $filename . "'>".$filename."</option>";
}

答案 1 :(得分:1)

您只需要if语句和条件来过滤结果。正则表达式在这里特别有用。这样的事情应该做你想做的事情:

<select name="s1">
    <option value="" selected="selected">-----</option>
    <?php 
        foreach(glob(dirname(__FILE__) . '/images/*') as $filename){
            $filename = basename($filename);
            if (preg_match('/\.(jpg|png|gif)$/i', $filename)) {
                echo "<option value='" . $filename . "'>".$filename."</option>";
            }
        }
    ?>
</select>

注意:我已将代码格式化为使用一致的缩进以使其可读。