2012-11-07 41 views
1

可能重複刪除所有,但一個文件類型的目錄:
Does glob() have negation?使用水珠PHP

我想從目錄中刪除所有文件(可以是任何數量的文件擴展的)開從那裏的單個index.html。

我使用:

$path = "/assets/cache/"; 

foreach(glob($path ."*.*") as $file) { 
    unlink($file); 
} 

但不能爲我的生命怎麼說取消鏈接,如果不是.HTML!

謝謝!

回答

4

試試這個這裏...

$path = "/assets/cache/"; 

foreach(glob($path ."*.*") as $file) { 
    $pathPart = explode(".",$file); 
    $fileEx = $pathPart[count($pathPart)-1]; 
    if($fileEx != "html" && $fileEx != "htm"){ 
     unlink($file); 
    } 
} 
+0

你先生,是一個bloomin天才。完善!! – bjohnb

+0

高興地幫助我的朋友。如果你得到了你需要的答案,不要忘記接受(:謝謝。 – George

+1

當時我不能接受,因爲它說我必須再等4分鐘!Gahh!我現在纔回來接受它!我不會忘記你的幫助:) – bjohnb

4

嘗試

$path = "/assets/cache/"; 

foreach(glob($path ."*.*") as $file) { 
    if(pathinfo($file, PATHINFO_EXTENSION) != 'html') { 
     unlink($file); 
    } 
} 

,如果你也想刪除其它的HTML文件(除 「的index.html」):

$path = "/assets/cache/"; 

foreach(glob($path ."*.*") as $file) { 
    if(pathinfo($file, PATHINFO_BASENAME) != 'index.html') { 
     unlink($file); 
    } 
} 
1

php函數glob沒有否定,但是PHP可以通過給你兩個小球之間的區別3210:

$all = glob("*.*"); 
$not = glob("php_errors.log"); 

var_dump(
    $all, 
    $not, 
    array_diff($all, $not) 
); 

觀看演示:http://codepad.org/RBFwPUWm

如果你不想使用數組,我強烈建議去看看到PHP的目錄迭代器。