我在下面的代码中列出了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>
答案 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>
注意:我已将代码格式化为使用一致的缩进以使其可读。