Googleで検索したら、以下のようなPHPのサンプルコードがあった。
ディレクトリ内のファイルをまとめて削除したい - PHPプロ!Q&A掲示板
1. if ($handle = opendir('.')) {
2. while (false !== ($file = readdir($handle))) {
3. if (is_file($file) && $file != "index.php") {
4. echo (unlink($file)) ? "{$file}を削除しました<br>\n" :
5. "{$file}の削除に失敗しました<br>\n";
6. }
7. }
8. closedir($handle);
9. } else {
10. echo("ディレクトリのオープンに失敗");
11. }
PHPのreaddir関数で、ディレクトリ内のファイルを順次読み込んでいくのが肝だな。
PHP: readdir - Manual
ディレクトリから次のファイルのファイル名を返します。
ファイル名はファイルシステム上に格納されている順番で返されます。
CodeIgniterのモデルで以下のようなメソッドを実装した。
(例)「zip」フォルダ内のファイルを削除する場合
// ディレクトリ内を空にする
function delete_file($dir)
{
if ($handle = opendir($dir)) {
while (false !== ($file = readdir($handle))) {
$target_file = $dir.'/'.$file;
if (is_file($target_file)) {
unlink($target_file);
}
}
}
}
// delete_fileメソッドを呼び出す
$target_dir = "zip";
$this->delete_file($target_dir);
他にもこんなやり方が紹介されていた。
ディレクトリ内のファイル/フォルダの一括削除 - Yahoo知恵袋
サーバーの環境依存になるがsystem()を利用してOSのコマンドを実行して消す。
UNIX環境
system( "rm -rf dirpath" );
PHPのsystem関数で、OSのディレクトリやファイルを操作するシェルコマンドを実行すればOKと。
PHP: system - Manual
system ― 外部プログラムを実行し、出力を表示する
system関数を使う場合は、間違って変なコマンドを実行してしまわないように、慎重に利用しないといけないな。
![]() | PHP 逆引きレシピ (PROGRAMMER’S RECiPE) (2009/06/30) 鈴木 憲治安藤 建一 商品詳細を見る |
- 関連記事
-
- CodeIgniterのMatchBoxとHMVC
- 祝!1万部超え『PHP逆引きレシピ』プレゼントキャンペーン
- CodeIgniterをHMVCでモジュール化
- PHPで文字コードをSJISからUTF8に変換する方法
- PHPで配列の重複を削除する方法
- Fatal error: Allowed memory size of 16777216 bytes exhausted
- PHPのstrlen関数で全角文字が3バイトになる件
- PHPでファイル一括削除
- PHPで日時の大小比較
- CodeIgniter 1.7.1 日本語化パック
- AmazonのASINで、36進数を10進数へ変換
- PHPの正規表現
- MatchBox for CodeIgniter 使い方
- PHPでディレクトリの容量を計算する方法
- CodeIgniterで作られたwiki