75 lines
1.6 KiB
PHP
75 lines
1.6 KiB
PHP
|
<?php
|
||
|
/*
|
||
|
* ls(dir,pattern) return file list in "dir" folder matching "pattern"
|
||
|
* ls("path","module.php?") search into "path" folder for module.php3, module.php4, ...
|
||
|
* ls("images/","*.jpg") search into "images" folder for JPG images
*/
|
||
|
class mydir{
|
||
|
private $list;
|
||
|
function __construct($__dir="./",$__pattern="*.*")
|
||
|
{
|
||
|
settype($__dir,"string");
|
||
|
settype($__pattern,"string");
|
||
|
|
||
|
$this->list=array();
|
||
|
$__regexp=preg_quote($__pattern,"/");
|
||
|
$__regexp=preg_replace("/[\\x5C][\x2A]/",".*",$__regexp);
|
||
|
$__regexp=preg_replace("/[\\x5C][\x3F]/",".", $__regexp);
|
||
|
|
||
|
if(is_dir($__dir))
|
||
|
if(($__dir_h=@opendir($__dir))!==FALSE)
|
||
|
{
|
||
|
while(($__file=readdir($__dir_h))!==FALSE)
|
||
|
if(preg_match("/^".$__regexp."$/",$__file))
|
||
|
array_push($this->list,$__file);
|
||
|
|
||
|
closedir($__dir_h);
|
||
|
sort($this->list,SORT_STRING);
|
||
|
}
|
||
|
}
|
||
|
function toArray()
|
||
|
{
|
||
|
return $this->list;
|
||
|
}
|
||
|
function getLast()
|
||
|
{
|
||
|
return $this->list[count($this->list)-1];
|
||
|
}
|
||
|
|
||
|
function array_flat($array)
|
||
|
{
|
||
|
foreach($array as $a)
|
||
|
{
|
||
|
if(is_array($a))
|
||
|
{
|
||
|
$tmp = array_merge($tmp, $this->array_flat($a));
|
||
|
}else {
|
||
|
$tmp[] = $a;
|
||
|
}
|
||
|
}
|
||
|
return $tmp;
|
||
|
}
|
||
|
|
||
|
function recursive($dir)
|
||
|
{
|
||
|
$files = array();
|
||
|
if ($handle = opendir($dir))
|
||
|
{
|
||
|
while (false !== ($file = readdir($handle)))
|
||
|
{
|
||
|
if ($file != "." && $file != "..")
|
||
|
{
|
||
|
if(is_dir($dir.'/'.$file))
|
||
|
{
|
||
|
$dir2 = $dir.'/'.$file;
|
||
|
$files[]=$dir2.'/';
|
||
|
$files[] = $this->recursive($dir2);
|
||
|
} else {
|
||
|
$files[] = $dir.'/'.$file;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
closedir($handle);
|
||
|
}
|
||
|
return $this->array_flat($files);
|
||
|
}
|
||
|
}
|