使用PHP,我怎样才能找到文件夹或其子文件夹(任何深度)中的所有.php文件?
答案 0 :(得分:33)
您可以使用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;
}
}
答案 1 :(得分:9)
只需添加以下内容:
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__));
答案 2 :(得分:3)
很晚。 但我认为这对那些在搜索后降落在这里的人有用。
我修改了由 supajason 创建的代码 因为提供的代码没有返回一致的结果: 主要是由于使用了命名法。
我还添加了一些功能。
希望它有用!
select landingPage from landing where currentTime < endTime OR currentTime > startTime
答案 3 :(得分:0)
这与此处的另一个答案类似,但是删除了SKIP_DOTS
,因为它不是
并与strict_types
一起使用:
<?php
$o_dir = new RecursiveDirectoryIterator('.');
$o_iter = new RecursiveIteratorIterator($o_dir);
foreach ($o_iter as $o_info) {
if ($o_info->getExtension() == 'php') {
echo $o_info->getPathname(), "\n";
}
}