具有以下内容以在数组中提供目录列表
for($index=0; $index < $indexCount; $index++) {
if (substr("$dirArray[$index]", 0, 1) != ".") { // don't list hidden files
echo "<option value=\"".$dirArray[$index]."\">".$dirArray[$index]."</option>";
}
有什么方法可以修改上面的代码,只显示.JPG和.PNG?
谢谢!
CP
答案 0 :(得分:2)
foreach($dirArray[$index] as $k => $v) {
if(in_array(pathinfo($v, PATHINFO_EXTENSION), array('jpg', 'png', 'jpeg')) {
echo '<option value="'.$v.'">'.$v.'</option>';
}
}
我假设你的文件数组有些东西。还有一个原因你没有使用readdir()函数吗?
答案 1 :(得分:1)
如果文件名以.jpg
或.png
for($index=0; $index < $indexCount; $index++)
{
if(preg_match("/^.*\.(jpg|png)$/i", $dirArray[$index]) == 1)
{
echo "<option value=\"".$dirArray[$index]."\">".$dirArray[$index]."</option>";
}
}
正则表达式末尾的 /i
是不区分大小写的标志。
答案 2 :(得分:0)
for($index=0; $index < $indexCount; $index++) {
if (substr($dirArray[$index], 0, 1) != "."
&& strtolower(substr($dirArray[$index], -3)) == 'png'
&& strtolower(substr($dirArray[$index], -3)) == 'jpg')
echo '<option value="'.$dirArray[$index].'">'.$dirArray[$index].'</option>';
}
这应该可行,但有更优雅的解决方案,例如使用DirectoryIterator
(请参阅here):
foreach (new DirectoryIterator('your_directory') as $fileInfo) {
if($fileInfo->isDot()
|| !in_array($fileInfo->getExtension(), array('png', 'jpg')))
continue;
echo sprintf('<option value="%s">%s</option>',
$fileInfo->getFilename(),
$fileInfo->getFilename());
}
代码未经过测试,您可能需要对其进行一些调整。