日期:2014-05-16  浏览次数:20685 次

获得linux文件夹下的所有文件(强化版)
class Sys
{	
    /**
     * 获得linux文件夹下的所有文件,通过参数返回结果
     * 
     * @param string $dir1 必须是绝对路径,且最后没有/,例如/home/dir2
     * @param array  $arr  一个空的数组传进去
     * @param string $regular 一个正则表达式,对应文件名,例如'#\.html$#'
     * @param string $content_regular 一个正则表达式,对应文件内容,例如'#内容标题#',
     *     如果使用这个参数,文件编码要统一
     * 
     * @return 
     */
    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);
            }
        }
        
        
    }
    
    
}