PHP プロジェクトを開発するとき、一時ファイルやキャッシュ ファイルなど、ディレクトリ内のすべてのファイルを削除する必要がある場合があります。この記事では、ディレクトリ内のすべてのファイルを削除するためのいくつかの PHP メソッドを紹介します。
glob 関数は、指定されたディレクトリ内のすべてのファイルとフォルダーを一覧表示し、それらを配列で返すことができます。ディレクトリ内のすべてのファイルは、配列をループし、unlink 関数を使用して各ファイルを削除することで削除できます。コードは次のとおりです。
$files = glob('/path/to/directory/*'); // 获取目录下所有文件 foreach ($files as $file) { if (is_file($file)) { // 判断是否为文件 unlink($file); // 删除文件 } }
opendir 関数は、ディレクトリを開いて、そのディレクトリへのポインタを返すことができます。 readdir 関数は、ディレクトリへのポインタを読み取り、ディレクトリ内のファイル名を返すことができます。読み取られたファイル名をたどり、unlink 関数を使用して各ファイルを削除すると、ディレクトリ内のすべてのファイルを削除できます。コードは次のとおりです。
$handle = opendir('/path/to/directory/'); while ($file = readdir($handle)) { if ($file != '.' && $file != '..' && is_file('/path/to/directory/' . $file)) { // 排除 . 和 .. 目录和子目录,只处理文件 unlink('/path/to/directory/' . $file); // 删除文件 } } closedir($handle); // 关闭目录句柄
RecursiveDirectoryIterator は、サブディレクトリを含むファイルとフォルダーを走査できる再帰的反復子です。 RecursiveIteratorIterator は、トラバースの深さに応じてイテレータを制御できます。上記 2 つのクラスを使用すると、フォルダー内のすべてのファイルを再帰的に削除できます。コードは次のとおりです。
$directory = '/path/to/directory/'; $iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directory), RecursiveIteratorIterator::CHILD_FIRST); foreach ($iterator as $file) { if ($file->isFile()) { // 判断是否为文件 unlink($file->getPathname()); // 删除文件 } }
上記のコードは、ディレクトリ内のすべてのファイルとフォルダーを同時に削除することに注意してください。ファイルのみを削除したい場合は、条件判定の $file->isFile()
を $file->isFile() && !$file->isDir() に変更してください。 ###。
以上がphp ディレクトリ内のすべてのファイルを削除しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。