[php] PHP를 사용하여 폴더에서 모든 파일을 삭제 하시겠습니까?

예를 들어`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, unlinkglob:

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);
}


답변

readdirunlink를 참조 하십시오 .

<?php
    if ($handle = opendir('/path/to/files'))
    {
        echo "Directory handle: $handle\n";
        echo "Files:\n";

        while (false !== ($file = readdir($handle)))
        {
            if( is_file($file) )
            {
                unlink($file);
            }
        }
        closedir($handle);
    }
?>