1

重複の可能性:
glob()には否定がありますか?

ディレクトリ内の単一のindex.htmlを除いて、ディレクトリ(任意の数のファイル拡張子である可能性があります)からすべてのファイルを削除したいと思います。

私が使用しているもの:

$path = "/assets/cache/";

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

しかし、.htmlでなければ、リンク解除の言い方は私の人生ではできません!

ありがとう!

4

3 に答える 3

4

ここでこれを試してください...

$path = "/assets/cache/";

foreach(glob($path ."*.*") as $file) {
    $pathPart = explode(".",$file);
    $fileEx = $pathPart[count($pathPart)-1];
    if($fileEx != "html" && $fileEx != "htm"){
        unlink($file);
    }
}
于 2012-11-07T14:27:12.760 に答える
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);
    }
}
于 2012-11-07T14:27:54.180 に答える
1

php関数globには否定はありませんが、PHPは次の方法で2つのグロブの違いを示すことができますarray_diff

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

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

デモを参照してください:http://codepad.org/RBFwPUWm

配列を使用したくない場合は、PHPのディレクトリイテレータを調べることを強くお勧めします。

于 2012-11-07T16:03:37.007 に答える