예를 들어`Temp ‘라는 폴더가 있고 PHP를 사용하여이 폴더에서 모든 파일을 삭제하거나 플러시하고 싶었습니다. 내가 할 수 있을까?
답변
$files = glob('path/to/temp/*'); // get all file names
foreach($files as $file){ // iterate files
if(is_file($file))
unlink($file); // delete file
}
.htaccess와 같은 ‘숨겨진’파일을 제거하려면 사용해야합니다
$files = glob('path/to/temp/{,.}*', GLOB_BRACE);
답변
당신의 조합을 사용 (하위 폴더 포함) 폴더에서 모든 것을 삭제하려면 array_map
, unlink
및 glob
:
array_map( 'unlink', array_filter((array) glob("path/to/temp/*") ) );
이 호출은 빈 디렉토리를 처리 할 수도 있습니다 (팁 덕분에 @mojuba!)
답변
다음은 표준 PHP 라이브러리 (SPL)를 사용하는보다 현대적인 접근 방식 입니다.
$dir = "path/to/directory";
$di = new RecursiveDirectoryIterator($dir, FilesystemIterator::SKIP_DOTS);
$ri = new RecursiveIteratorIterator($di, RecursiveIteratorIterator::CHILD_FIRST);
foreach ( $ri as $file ) {
$file->isDir() ? rmdir($file) : unlink($file);
}
return true;
답변
foreach (new DirectoryIterator('/path/to/directory') as $fileInfo) {
if(!$fileInfo->isDot()) {
unlink($fileInfo->getPathname());
}
}
답변
이 코드는 http://php.net/unlink에서 제공됩니다 .
/**
* Delete a file or recursively delete a directory
*
* @param string $str Path to file or directory
*/
function recursiveDelete($str) {
if (is_file($str)) {
return @unlink($str);
}
elseif (is_dir($str)) {
$scan = glob(rtrim($str,'/').'/*');
foreach($scan as $index=>$path) {
recursiveDelete($path);
}
return @rmdir($str);
}
}
답변
$dir = 'your/directory/';
foreach(glob($dir.'*.*') as $v){
unlink($v);
}