Php 在“文件”下拉列表中仅列出图像文件

Php 在“文件”下拉列表中仅列出图像文件,php,Php,我有下面的代码,它将列出images文件夹中的所有文件。如何仅列出列表中的某些扩展名,如jpg、png、gif <select name="s1"> <option value="" selected="selected">-----</option> <?php foreach(glob(dirname(__FILE__) . '/images/*') as $filename) { $filename =

我有下面的代码,它将列出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>

-----

您只需要一个
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>

-----

您只需要一个
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>

-----
接受2个参数。第二个参数标志的文档显示:

大括号-展开{a,b,c}以匹配“a”,“b”或“c”

有关更多信息,请参阅:

foreach(glob(dirname(__FILE__) . '/images/*.{jpg,png,gif}', GLOB_BRACE) as $filename){
   $filename = basename($filename);
   echo "<option value='" . $filename . "'>".$filename."</option>";
}
foreach(glob(dirname(_文件).'/images/.{jpg,png,gif}',glob大括号)作为$filename){
$filename=basename($filename);
回显“$filename.”;
}
接受两个参数。第二个参数标志的文档显示:

大括号-展开{a,b,c}以匹配“a”,“b”或“c”

有关更多信息,请参阅:

foreach(glob(dirname(__FILE__) . '/images/*.{jpg,png,gif}', GLOB_BRACE) as $filename){
   $filename = basename($filename);
   echo "<option value='" . $filename . "'>".$filename."</option>";
}
foreach(glob(dirname(_文件).'/images/.{jpg,png,gif}',glob大括号)作为$filename){
$filename=basename($filename);
回显“$filename.”;
}

谢谢,但我收到了解析错误:语法错误,if中出现意外的“/”(preg|u match(/\(jpg|png|gif)$/i,$filename)){@gtroop Oops;省略引号。请查看我的编辑。@gtroop很乐意提供帮助。如果您的要求足够简单,它也很好,可能会更好。谢谢,但我收到了分析错误:语法错误,if(preg|u match(/\(jpg | png | gif)$/i,$filename)中意外出现“/”{@gtroop-Oops;省略引号。请查看我的编辑。@gtroop很乐意提供帮助。它也很好,如果您的要求足够简单,它可能会工作得更好。