...
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)
|
...
Below is another example to find files in regexp.
Code Block |
---|
// Programmed by Chun Kang - 2020-03-27 function findfiles( $path, $regexp="", $order=0) { $r = scandir( $path, $regex) { $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);
} |