scandir( $path) returns the searched result in array. If you want to implement recursive scan for sub directories, you can implement it by checking filetype().
$result = scandir(directory, order, context)
- it returns false on failure.
<?php $r = scandir("/etc/"); print_r( $r); ?>
Below is another example to find files in regexp.
// Programmed by Chun Kang - 2020-03-27 function findfiles( $path, $regexp="", $order=0) { $r = scandir( $path, $order); // $order: 0->ascending / 1->descending if ($r==false) $ret=$r; else { $ret=array(); $i=count($r)-1; for($i=0; $i<count($r); $i++) { if ( (($regexp=="") || preg_match('/' . $regexp . '/', $r[$i])) && strlen($r[$i]) && $r[$i]!='.' && $r[$i]!='..' ) $ret[]=$r[$i]; } } return $ret; } $r = findfiles( "/repostirory", "qsok(.*)mysql"); print_r($r);
Below is another example to find files including sub directories combined with regexp:
function findfiles( $path, $regexp=NULL, $order=0) { $ret = array(); $searchEntry = array(); $searchEntry []= $path; $hasRegexp = strlen($regexp); $entry_cnt=0; while( $entry_cnt<count($searchEntry)) { $entryPath = $searchEntry[$entry_cnt++]; echo "scan - {$entryPath}\n"; $r = scandir( $entryPath, $order); // $order: 0->ascending / 1->descending foreach($r as $filename) { $full_path = $entryPath . "/" . $filename; echo "[{$filename}] - {$full_path}\n"; if (($filename!=".") && ($filename!="..")) { if ( filetype( $full_path) == "dir") $searchEntry []= $full_path; else if ( (!$hasRegexp || preg_match('/' . $regexp . '/', $filename)) && strlen($filename) ) $ret[]=str_replace( $path . "/", "", $full_path); } } } return (count($ret) ? $ret: NULL); }