php目录以及文件遍历类欢迎大家拍砖
/********************************************************************************* * 目录及文件遍历类 *------------------------------------------- *初级版本,偶的小博客后续根据时间和使用 会逐步改善这些类 *另外推荐大家可以使用 initphp 2.0 国产php开发框架 link : http://www.initphp.com *------------------------------------------- * $author:liuxinming * $dtime:2012-06-23 ***********************************************************************************/ class getfiles{ /* * 目录 */ private $path; /* * 类型 * @param $typeimg 图片格式 * @param $typeflash * @param $typesp 视频格式 * @param $typetext 文本格式 * @param $typeplay 播放媒体格式 * 根据需求可以自己增加格式 */ private $typeimg=',.jpg,.gif,.png,.bmp,.jpeg,'; private $typeflash=',.swf,.flv,.dcr,'; private $typesp=',.wmv,.asf,.wma,.mp3,.asx,.mid,.midi,'; private $typetext=',.txt,.doc,.exl,'; private $typeplay=',.rm,.ra,.rmvb,.mp4,.mov,.avi,.wav,.ram,.mpg,.mpeg,'; /** * 构造函数 */ function __construct($path){ $this->path=$path; } /** * 取得文件扩展名 */ function getfiletype($filename){ $filer=explode(.,$filename); $count=count($filer)-1; return strtolower(..$this->repgetfiletype($filer[$count])); } /** * */ function repgetfiletype($filetype){ $filetype=str_replace('|','_',$filetype); $filetype=str_replace(',','_',$filetype); $filetype=str_replace('.','_',$filetype); return $filetype; } /** * 文件大小格式转换 * @param string $filesize */ function pathfilesize($size){ if($size>=1024*1024){//mb //函数通过千位分组来格式化数字 $filesize=number_format($size/(1024*1024),2,'.',''). mb; }else if($size>=1024){//kb $filesize=number_format($size/1024,2,'.',''). kb; }else{ $filesize=$size. bytes; } return $filesize; } /** * 遍历目录及文件并echo 输出 * */ function getfiles(){ $path=$this->path; //检查指定的文件或目录是否存在 if(!is_dir($path)) continue; //打开目录 句柄 $dir=opendir($path); while(($file=readdir($dir))!=false){ if($file=='.' || $file=='..'){ continue; } if($file!='.' || $file!='..'){ //目录 $pathfile=$path.'/'.$file; if(is_dir($pathfile)){//此分支输出目录 $filename=$file; //发布时间 $filetime=@filemtime($pathfile); $filetime=date(y-m-d h:i:s,$filetime); $filesize=''; $filetype='文件夹'; }else{//此分支输出文件 $filename=$file; $ftype=$this->getfiletype($file); //发布时间 $filetime=@filemtime($pathfile); $filetime=date(y-m-d h:i:s,$filetime); //文件大小 $fsize=@filesize($pathfile); $filesize=$this->pathfilesize($fsize); //文件类型 if(strstr($this->typeimg,','.$ftype.',')) { $filetype='图片'; } elseif(strstr($this->typeflash,','.$ftype.',')) { $filetype='flash'; } elseif(strstr($this->typesp,','.$ftype.',')||strstr($typeplay,','.$ftype.',')) { $filetype='视频'; }elseif(strstr($this->typetext,','.$ftype.',')){ $filetype='文本'; } else { $filetype='附件'; } } $table=''; $tr=''; $tr1='
'; $table1='
'; $td=$tr.''.$filename.' '.$filetype.' '.''.$filesize.' '.$tr1; echo $return=$table.$td.$table1; }else{ continue; } } } }
使用方法:
$path='/var/www/lxm/ecms';
$files=new getfiless($path);
$files->getfiles();
运行后效果图: