PHP 中的目录列表
Directory Listing in PHP
我有一个 php 功能,可以让我从某个目录中删除图像。现在我的问题是,在我的代码中,我可以看到列出的 index.php 文件,我只想显示它下面的图像。这是我的完整代码:
$fid= $_POST['fid'];
if (("submit")&&($fid != "")) {
foreach($fid as $rfn) {
$remove = "$dir/$rfn";
unlink($remove);
}
}
$handle=opendir($dir);
while (($file = readdir($handle))!== false){
if ($file != "." && $file != "..") {
$size = filesize("$dir/$file");
$list .= '<div class="col-md-3 text-center" style="margin-top:20px;">';
$list .= '<img src="../inc/img/galeria/'.$file.'" class="rounded" width="100%" height="250px">';
$list .= '<br><br>';
$list .= '<input type="checkbox" class="form-control" name="fid[]" value="'.$file.'">';
$list .= '</div>';
}
}
closedir($handle);
echo $list;
现在这段代码工作得很好,问题是它列出了目录中的所有内容,而我只想显示该目录中的 jpg、jpeg、gif 或 png 文件。提前谢谢大家。
这是扫描目录并只处理特定文件的方法。适应您的使用:
$handle=opendir($dir);
while ( ($file = readdir($handle)) !== false ) {
$ext = pathinfo($file, PATHINFO_EXTENSION);
if ( in_array($file, ['.', '..']) || ! in_array($ext, ['jpeg', 'jpg', 'gif', 'png']) ) {
continue;
}
// Do something with file
}
问题已解决,感谢各位指教!
$images = glob('/tmp/*.{jpeg,gif,png}', GLOB_BRACE);
还有:
// image extensions
$extensions = array('jpg', 'jpeg', 'png', 'gif', 'bmp');
// init result
$result = array();
// directory to scan
$directory = new DirectoryIterator('/dir/to/scan/');
// iterate
foreach ($directory as $fileinfo) {
// must be a file
if ($fileinfo->isFile()) {
// file extension
$extension = strtolower(pathinfo($fileinfo->getFilename(), PATHINFO_EXTENSION));
// check if extension match
if (in_array($extension, $extensions)) {
// add to result
$result[] = $fileinfo->getFilename();
}
}
}
// print result
print_r($result);
这个更好,我已经设法让它发挥作用,向@pirateofmarmara 大声喊叫来指导我。
您可以尝试以下方法。我希望没有语法错误。我没有 运行 它。
foreach(glob($dir . "/*.{jpg,jpeg,png}", GLOB_BRACE) as $file) {
// echo $file;
}
我有一个 php 功能,可以让我从某个目录中删除图像。现在我的问题是,在我的代码中,我可以看到列出的 index.php 文件,我只想显示它下面的图像。这是我的完整代码:
$fid= $_POST['fid'];
if (("submit")&&($fid != "")) {
foreach($fid as $rfn) {
$remove = "$dir/$rfn";
unlink($remove);
}
}
$handle=opendir($dir);
while (($file = readdir($handle))!== false){
if ($file != "." && $file != "..") {
$size = filesize("$dir/$file");
$list .= '<div class="col-md-3 text-center" style="margin-top:20px;">';
$list .= '<img src="../inc/img/galeria/'.$file.'" class="rounded" width="100%" height="250px">';
$list .= '<br><br>';
$list .= '<input type="checkbox" class="form-control" name="fid[]" value="'.$file.'">';
$list .= '</div>';
}
}
closedir($handle);
echo $list;
现在这段代码工作得很好,问题是它列出了目录中的所有内容,而我只想显示该目录中的 jpg、jpeg、gif 或 png 文件。提前谢谢大家。
这是扫描目录并只处理特定文件的方法。适应您的使用:
$handle=opendir($dir);
while ( ($file = readdir($handle)) !== false ) {
$ext = pathinfo($file, PATHINFO_EXTENSION);
if ( in_array($file, ['.', '..']) || ! in_array($ext, ['jpeg', 'jpg', 'gif', 'png']) ) {
continue;
}
// Do something with file
}
问题已解决,感谢各位指教!
$images = glob('/tmp/*.{jpeg,gif,png}', GLOB_BRACE);
还有:
// image extensions
$extensions = array('jpg', 'jpeg', 'png', 'gif', 'bmp');
// init result
$result = array();
// directory to scan
$directory = new DirectoryIterator('/dir/to/scan/');
// iterate
foreach ($directory as $fileinfo) {
// must be a file
if ($fileinfo->isFile()) {
// file extension
$extension = strtolower(pathinfo($fileinfo->getFilename(), PATHINFO_EXTENSION));
// check if extension match
if (in_array($extension, $extensions)) {
// add to result
$result[] = $fileinfo->getFilename();
}
}
}
// print result
print_r($result);
这个更好,我已经设法让它发挥作用,向@pirateofmarmara 大声喊叫来指导我。
您可以尝试以下方法。我希望没有语法错误。我没有 运行 它。
foreach(glob($dir . "/*.{jpg,jpeg,png}", GLOB_BRACE) as $file) {
// echo $file;
}