我希望删除目录中的所有文件(可以是任意数量的文件扩展名),除了那里的单个index.html。
我正在使用:
$path = "/assets/cache/";
foreach(glob($path ."*.*") as $file) {
unlink($file);
}
但不能为我的生活怎么说unlink,如果不是.html!
谢谢!
答案 0 :(得分:4)
在这里试试......
$path = "/assets/cache/";
foreach(glob($path ."*.*") as $file) {
$pathPart = explode(".",$file);
$fileEx = $pathPart[count($pathPart)-1];
if($fileEx != "html" && $fileEx != "htm"){
unlink($file);
}
}
答案 1 :(得分: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);
}
}
答案 2 :(得分:1)
php函数glob
没有否定,但PHP可以通过array_diff
给你两个globs之间的区别:
$all = glob("*.*");
$not = glob("php_errors.log");
var_dump(
$all,
$not,
array_diff($all, $not)
);
请参阅演示:http://codepad.org/RBFwPUWm
如果您不想使用数组,我强烈建议您查看PHP目录迭代器。