使用PHP,如何找到文件夾或其子文件夾(任意深度)中的所有.php文件?查找文件夾中的所有.php文件遞歸
8
A
回答
11
只需添加類似:
function listFolderFiles($dir){
$ffs = scandir($dir);
$i = 0;
$list = array();
foreach ($ffs as $ff){
if ($ff != '.' && $ff != '..'){
if (strlen($ff)>=5) {
if (substr($ff, -4) == '.php') {
$list[] = $ff;
//echo dirname($ff) . $ff . "<br/>";
echo $dir.'/'.$ff.'<br/>';
}
}
if(is_dir($dir.'/'.$ff))
listFolderFiles($dir.'/'.$ff);
}
}
return $list;
}
$files = array();
$files = listFolderFiles(dirname(__FILE__));
31
您可以使用RecursiveDirectoryIterator
和RecursiveIteratorIterator
:
$di = new RecursiveDirectoryIterator(__DIR__,RecursiveDirectoryIterator::SKIP_DOTS);
$it = new RecursiveIteratorIterator($di);
foreach($it as $file) {
if (pathinfo($file, PATHINFO_EXTENSION) == "php") {
echo $file, PHP_EOL;
}
}
3
很晚。 但我認爲這對搜索後落在這裏的人會有用。
我修改了一下創建的代碼通過supajason 由於提供的代碼沒有返回一致的結果:主要是由於所使用的術語 。
我還添加了一些功能。
希望它是有用的!
<?php
define('ROOT', str_replace('\\', '/', getcwd()).'/');
///########-------------------------------------------------------------
///########-------------------------------------------------------------
///######## FUNCTION TO LIST ALL FILES AND FOLDERS WITHIN A CERTAIN PATH
///########-------------------------------------------------------------
///########-------------------------------------------------------------
function listFolderFiles(
$dir, /// **** TARGET DIRECTORY TO SCAN
$ReturnFlat = true, /// **** DEFAULT FLAT ARRAY TO BE RETURNED
$iteration = 0 /// **** INTERNAL PARAM TO COUNT THE FUNCTIONS OWN ITERATIONS
){
///########==================================================
///######## PREPARE ALL VARIABLES
///########==================================================
$dir = rtrim($dir, '/'); /// **** REMOVE TRAILING SLASH (* just for being pretty *)
$FilesFolders = scandir($dir); /// **** SCAN FOR ALL FILES AND FOLDERS
$NestedFolders = array(); /// **** THE NESTED FOLDERS BUILD ARRAY
static $TotalFiles = array(); /// **** THE TOTAL FILES ARRAY
///######## MAKE SURE THAT THE STATIC FILES ARE WILL BE CLEARED AFTER THE FIRST ITERATION
if($iteration === 0){
///######### RESET AS EMPTY ARRAY
$TotalFiles = array();
}
///########==================================================
///########==================================================
///######## RUN THROUGH ALL FILES AND FOLDERS
///########==================================================
foreach($FilesFolders as $File){
if(
/// **** IF NOT ONE DIR UP
($File != '.')
&&
/// **** IF NOT TWO DIRS UP
($File != '..')
){
///######### IF IT CONCERNS A FILE
if(is_dir($dir.'/'.$File) === true){
$iteration++; /// **** RAISE THE ITERATION
$NestedFolders[] = listFolderFiles($dir.'/'.$File, false, $iteration); /// **** EXECUTE THE FUNCTION ITSELF
}
///######### IF IT CONCERNS A FILE
else{
$TotalFiles[] = $dir.'/'.$File; /// **** ADD THE FILE TO THE TOTAL FILES ARRAY
$NestedFolders[] = $File; /// **** ADD THE FILE TO THE NESTED FOLDERS ARRAY
}
}
}
///########==================================================
///####### IF A FLAT LIST SHOULD BE RETURNED
if($ReturnFlat === true){
///########==================================================
///######## RETURN ALL FILES AND FOLDERS IN A FLAT ARRAY
///########==================================================
return($TotalFiles);
///########==================================================
}
///######## IF A NESTED LIST SHOULD BE RETURNED
else{
///########==================================================
///######## RETURN THE FILES AND FOLDERS IN A NESTED ARRAY
///########==================================================
return($NestedFolders);
///########==================================================
}
}
$files = listFolderFiles(ROOT, true); /// **** FLAT ARRAY
///$files = listFolderFiles(ROOT, false); /// **** NESTED ARRAY
echo print_r($files, true);
?>
相關問題
- 1. 以遞歸方式打印文件夾中的所有文件和文件夾
- 2. 遞歸查找目錄中的所有文本文件
- 3. 輸入所有子文件夾 - 遞歸
- 4. 如何在Perl腳本中遞歸查找文件/文件夾?
- 5. PHP:遞歸和快速列出文件夾中的所有文件
- 6. python刪除所有文件(遞歸)沒有文件夾本身
- 7. 如何使用PHP在文件夾中遞歸地查找文件?
- 8. 遞歸地設置所有文件和文件夾的權限
- 9. 遞歸文件夾
- 10. 遞歸查找文件夾名稱(不是文件)
- 11. 將所有文件從子文件夾遞歸移動到父文件夾
- 12. Python的遞歸找到文件夾或子文件夾
- 13. 遞歸搜索系統中的所有文件夾和子文件夾
- 14. 使用Delphi遞歸刪除所有文件和文件夾
- 15. 通過終端遞歸列出所有文件和文件夾
- 16. 遞歸解析所有XML文件並排除文件夾
- 17. 如何遞歸列出所有文件夾和文件?
- 18. 遞歸地將文件包含到所有php文件中
- 19. 查找共享特殊文件夾(虛擬文件夾)中的所有文件
- 20. Powershell防止父文件夾的遞歸查找只搜索子文件夾
- 21. 遞歸找到所有不以評論開頭的php文件
- 22. 查找文件夾中的所有文件
- 23. 使用枚舉查找文件夾中的所有文件
- 24. 查找並刪除空文件夾遞歸沒有「-empty」參數
- 25. PHP遞歸文件夾計數(OOP,不是字面文件夾)
- 26. 顯示所有文件和每個文件的根文件夾遞歸
- 27. 如何在bash中的所有子文件夾中遞歸和同時查找文件
- 28. 有沒有辦法從文件夾中遞歸列出所有文件?
- 29. .gitignore將文件夾中的所有文件遞歸添加到白名單中?
- 30. 在PowerShell中刪除文件夾中的所有文件(非遞歸)
*「提供的代碼沒有返回一致的結果」* - 這是什麼意思?你的實現行爲有什麼不同? – 2015-11-04 15:32:36