...
Excerpt |
---|
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(). |
Info |
---|
$result = scandir(directory, order, context)
|
...
Code Block |
---|
// 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:
Code Block |
---|
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); } |