假设我有一个目录:
ABC
|_ a1.txt
|_ a2.txt
|_ a3.txt
|_ a4.txt
|_ a5.txt
如何使用PHP将这些文件名转换为数组,仅限于特定的文件扩展名并忽略目录?
答案 0 :(得分:13)
您可以使用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;
}
}
?>
答案 1 :(得分:2)
试试这个:
if ($handle = opendir('.')) {
$files=array();
while (false !== ($file = readdir($handle))) {
if(is_file($file)){
$files[]=$file;
}
}
closedir($handle);
}
答案 2 :(得分:1)
scandir
列出指定路径中的文件和目录。
答案 3 :(得分:1)
这是基于此article基准测试的最强高效方式:
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()函数,您甚至可以修改它以获取所需的文件夹路径和/或扩展名,这很容易。
答案 4 :(得分:0)
答案 5 :(得分:0)
如果您的文本文件是文件夹中的所有内容,最简单的方法是使用scandir,如下所示:
<?php
$arr=scandir('ABC/');
?>
如果你有其他文件,你应该像劳伦斯的答案一样使用glob。
答案 6 :(得分:0)
$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