() (PHP) bir dizin klasörleri bulmak için scandir kullanma

4 Cevap php

Ben bu kod peice kullanıyorum:

$target = 'extracted/' . $name[0];  
$scan = scandir($target);

Zip yüklenenler için kullanılan bir klasörün dizinini taramak için. Ben bu yüzden $target dizinindeki dosyaları bırakarak, onları ve onların içeriğini silebilirsiniz benim $target klasör içindeki tüm klasörleri bulmak mümkün istiyorum.

Ben klasörün içeriğini döndü sonra, ben klasörleri silmek edebilmek için klasör ve dosyalar arasında ayırt etmek nasıl bilmiyorum.

Ayrıca, bu etrafında herhangi bir yolu yoktur, rmdir() function içlerinde içeriğe sahip klasörleri silemezsiniz söylendi?

Teşekkürler, Ben.

4 Cevap

Eğer bir klasör veya dosya işlevlerini is_dir() ve is_file() kullanmak zorunda olup olmadığını belirlemek için

Örneğin:

$path = 'extracted/' . $name[0];
$results = scandir($path);

foreach ($results as $result) {
    if ($result === '.' or $result === '..') continue;

    if (is_dir($path . '/' . $result)) {
        //code to use if directory
    }
}

iyi kullanmak için DirectoryIterator

$path = 'extracted'; // '.' for current
foreach (new DirectoryIterator($path) as $file)
{
    if($file->isDot()) continue;

    if($file->isDir())
    {
        print $file->getFilename() . '<br />';
    }
}

Öncelikle, rmdir () içeriği ile bir klasörü silemezsiniz. Güvenli mod devre dışı Eğer aşağıdakileri kullanabilirsiniz.

exec("rm -rf folder/");

Ayrıca is_dir bakmak () / is_file () ya da daha iyi PHP SPL.

$directories = scandir('images');
foreach($directories as $directory){
    if($directory=='.' or $directory=='..' ){
        echo 'dot';
    }else{
            if(is_dir($directory)){
                  echo $directory .'<br />';
            }
    }
} 

basit ve belki de daha hızlı versiyon