我一直试图找出一种列出目录中包含的所有文件的方法。我不太适合使用php自己解决它,所以希望有人可以帮助我。
我需要一个简单的PHP脚本,它将我的images目录中包含的所有文件名加载到一个数组中。非常感谢任何帮助,谢谢!
答案 0 :(得分:95)
答案 1 :(得分:17)
scandir()
- 列出指定路径中的文件和目录
$images = scandir("images", 1);
print_r($images);
产地:
Array
(
[0] => apples.jpg
[1] => oranges.png
[2] => grapes.gif
[3] => ..
[4] => .
)
答案 2 :(得分:10)
其他地方建议的scandir()
或
glob()
- 查找与模式匹配的路径名示例强>
$images = glob("./images/*.gif");
print_r($images);
/* outputs
Array (
[0] => 'an-image.gif'
[1] => 'another-image.gif'
)
*/
或者,要直接遍历目录中的文件而不是获取数组,请使用
示例强>
foreach (new DirectoryIterator('.') as $item) {
echo $item, PHP_EOL;
}
要进入子目录,请使用RecursiveDirectoryIterator:
$items = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator('.'),
RecursiveIteratorIterator::SELF_FIRST
);
foreach($items as $item) {
echo $item, PHP_EOL;
}
要仅列出文件名(w \ out目录),请删除RecursiveIteratorIterator::SELF_FIRST
答案 3 :(得分:3)
您还可以使用Standard PHP Library的DirectoryIterator
课程,特别是getFilename
方法:
$dir = new DirectoryIterator("/path/to/images");
foreach ($dir as $fileinfo) {
echo $fileinfo->getFilename() . "\n";
}
答案 4 :(得分:1)
这将为您提供链接中的所有文件。
<?php
$path = $_SERVER['DOCUMENT_ROOT']."/your_folder/";
$files = scandir($path);
$count=1;
foreach ($files as $filename)
{
if($filename=="." || $filename==".." || $filename=="download.php" || $filename=="index.php")
{
//this will not display specified files
}
else
{
echo "<label >".$count.". </label>";
echo "<a href="download.php/?filename=".$filename."">".$filename."</a>
";
$count++;
}
}
?>
答案 5 :(得分:-1)
也许这个功能将来会有用。如果你需要回应事物或想要做其他事情,你可以操纵这个功能。
$wavs = array();
$wavs = getAllFiles('folder_name',$wavs,'wav');
$allTypesOfFiles = array();
$wavs = getAllFiles('folder_name',$allTypesOfFiles);
//explanation of arguments from the getAllFiles() function
//$dir -> folder/directory you want to get all the files from.
//$allFiles -> to store all the files in and return in the and.
//$extension -> use this argument if you want to find specific files only, else keept empty to find all type of files.
function getAllFiles($dir,$allFiles,$extension = null){
$files = scandir($dir);
foreach($files as $file){
if(is_dir($dir.'/'.$file)) {
$allFiles = getAllFiles($dir.'/'.$file,$allFiles,$extension);
}else{
if(empty($extension) || $extension == pathinfo($dir.'/'.$file)['extension']){
array_push($allFiles,$dir.'/'.$file);
}
}
}
return $allFiles;
}