欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

获得linux文件夹下的所有文件(强化版)

程序员文章站 2022-07-13 14:35:45
...
class Sys
{	
    /**
     * 获得linux文件夹下的所有文件,通过参数返回结果
     * 
     * @param string $dir1 必须是绝对路径,且最后没有/,例如/home/dir2
     * @param array  $arr  一个空的数组传进去
     * @param string $regular 一个正则表达式,对应文件名,例如'#\\.html$#'
     * @param string $content_regular 一个正则表达式,对应文件内容,例如'#内容标题#',
     *     如果使用这个参数,文件编码要统一
     * 
     * @return 从参数arr中取结果
     */
    public static function get_file_by_folder($dir1, &$arr,$regular='',$content_regular='')
    {            
        //static $db = null;
        if (is_dir($dir1)) {
            $handle = dir($dir1);
            if ($dh = opendir($dir1)) {
                while ($entry = $handle->read()) {
                    if (($entry != ".") && ($entry != "..")  && ($entry != ".svn")){
                        //文件全名
                        $new = $dir1."/".$entry;
                        if(is_dir($new)) {
                            //比较
                            self::get_file_by_folder($new,$arr,$regular,$content_regular) ;
                        } else { //如果1是文件,
                            if ($regular && (!$content_regular)){
                                if (preg_match($regular,$entry)) {
                                    $arr[] = $new;
                                }
                            }elseif($content_regular && (!$regular)){
                                $content = file_get_contents($new);
                                if (preg_match($content_regular,$content)) {
                                    $arr[] = $new;
                                }
                            }elseif ($content_regular && $regular){
                                $content = file_get_contents($new);
                                if (preg_match($regular,$entry) &&  
                                   preg_match($content_regular,$content)  ) {
                                    $arr[] = $new;
                                }
                            }else{
                                $arr[] = $new;
                            }
                        }
                    }
                }
                closedir($dh);
            }
        }
        
        
    }
    
    
}