如何获取文件夹下的文件名



假设我有一个目录,如下所示:

ABC
|_ a1.txt
|_ a2.txt
|_ a3.txt
|_ a4.txt
|_ a5.txt

如何使用PHP将这些文件名获取到一个数组中,仅限于特定的文件扩展名并忽略目录?

您可以使用glob()函数:

示例01:

<?php
  // read all files inside the given directory
  // limited to a specific file extension
  $files = glob("./ABC/*.txt");
?>

示例02:

<?php
  // perform actions for each file found
  foreach (glob("./ABC/*.txt") as $filename) {
    echo "$filename size " . filesize($filename) . "n";
  }
?>

示例03:使用RecursiveIteratorIterator

<?php 
foreach(new RecursiveIteratorIterator( new RecursiveDirectoryIterator("../")) as $file) {
  if (strtolower(substr($file, -4)) == ".txt") {
        echo $file;
  }
}
?>

试试这个:

if ($handle = opendir('.')) {
    $files=array();
    while (false !== ($file = readdir($handle))) {
        if(is_file($file)){
            $files[]=$file;
        }
    }
    closedir($handle);
}

scandir列出指定路径内的文件和目录。

以下是基于本文基准测试的最高效方法:

function getAllFiles() {
    $files = array();
    $dir = opendir('/ABC/');
    while (($currentFile = readdir($dir)) !== false) {
        if (endsWith($currentFile, '.txt'))
            $files[] = $currentFile;
    }
    closedir($dir);
    return $files;
}
function endsWith($haystack, $needle) {
    return substr($haystack, -strlen($needle)) == $needle;
}

只需使用getAllFiles()函数,甚至可以修改它以获取所需的文件夹路径和/或扩展名,这很容易。

除了scandir(@miku),您可能还发现glob对通配符匹配很感兴趣。

如果您的文本文件是文件夹中的所有文件,最简单的方法是使用scandir,如下所示:

<?php
$arr=scandir('ABC/');
?>

如果你有其他文件,你应该像劳伦斯的回答一样使用glob。

$dir = "your folder url"; //give only url, it shows all folder data
if (is_dir($dir)){
    if ($dh = opendir($dir)){
        while (($file = readdir($dh)) !== false){
            if($file != '.' and $file != '..'){
                echo $file .'<br>';
            }
        }
        closedir($dh);
    }
}

输出:

xyz
abc
2017
motopress

相关内容

  • 没有找到相关文章

最新更新