PHP ディレクトリとファイル トラバーサル クラスは誰でも歓迎します /*************************************************** * ***************************** * ディレクトリとファイルのトラバーサル クラス *------------------------------------------------ *基本バージョン。私のブログは、時間と使用状況に基づいてこれらのカテゴリを徐々に改善していきます。 ※国産PHP開発フレームワークInitPHP 2.0の利用も推奨リンク: http://www.initphp.com *------------------------------------------------ * $Author:liuxinming * $Dtime:2012-06-23 ************************************************* * *********************************/ クラスgetfiles{ /* * 目次 */ プライベート $パス; /* * タイプ * @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,'; /***コンストラクタ*/ 関数 __construct($path){ $this->path=$path; } /*** ファイル拡張子を取得*/ 関数 GetFiletype($filename){ $filer=explode(".",$ファイル名); $count=カウント($filer)-1; return strto lower(".".$this->RepGetFiletype($filer[$count])); } /****/ 関数 RepGetFiletype($filetype){ $filetype=str_replace('|','_',$filetype); $filetype=str_replace(',','_',$filetype); $filetype=str_replace('.','_',$filetype); $filetype を返します。 } /*** ファイルサイズ形式の変換 * @param string $filesize*/ 関数パスファイルサイズ($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"; }それ以外{ $filesize=$size." バイト"; } $filesize を返します。 } /*** ディレクトリとファイルを走査し、出力をエコーする **/ 関数 getfiles(){ $path=$this->パス; //指定されたファイルまたはディレクトリが存在するかどうかを確認します if(!is_dir($path)) 続行; // ディレクトリハンドルを開く $dir=opendir($path); while(($file=readdir($dir))!=false){ if($file=='.' || $file=='..'){ 続く; } if($file!='.' || $file!='..'){ //目次 $pathfile=$path.'/'.$file; if(is_dir($pathfile)){//このブランチ出力ディレクトリ $ファイル名=$ファイル; //公開時刻 $filetime=@filemtime($pathfile); $filetime=date("Y-m-d H:i:s",$filetime); $filesize=''; $filetype='フォルダ'; }else{//このブランチ出力ファイル $ファイル名=$ファイル; $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='フラッシュ'; } elseif(strstr($this->typesp,','.$ftype.',')||strstr($typeplay,','.$ftype.',')) { $filetype='ビデオ'; }elseif(strstr($this->typetext,','.$ftype.',')){ $filetype='テキスト'; } それ以外 { $filetype='添付ファイル'; } } $table=''; $tr=''; $tr1=''; $table1=''; $td=$tr.''.$filename.''.$filetype.''.' '.$filesize.''.$tr1; エコー $return=$table.$td.$table1; }それ以外{ 続く; } } } } 使用方法: $path='/var/www/lxm/ecms'; $files=new getfiles($path); $files->getfiles(); 操作後のレンダリング: