Bir alt eşleşen bir dizindeki tüm dosyaları ve dosya bulmak

3 Cevap php

Bir dizindeki dosyaların bir listesini döngü yaşıyorum ve ben dosya ile olan bir alt maç istiyorum. Dosya altdizesine varsa bunu silebilir, böylece daha sonra bu dosya adını döndürür. Ben şu ve onun sadece dönen şeyi yaptık:

while ($file = readdir($dir_handle)) { 

        $extension = strtolower(substr(strrchr($file, '.'), 1)); 
        if($extension == "sql" || $extension == "txt" ) {

            $pos = strpos($file, $session_data['user_id']);

            if($pos === true) {
                //unlink($file);
                echo "$file<br />"; 
            }else {
                // string not found
            }   
        }
} 

Ben yanlış ne yapıyorum?

Herhangi bir yardım için teşekkür ederiz

3 Cevap

strpos bir tamsayı veya FALSE döndürür. Eğer test olarak güncellemek isteyeceksiniz

$pos !== FALSE 

Daha sonra - dosyayı silmek istiyorsanız unlink () çağrısı yorumsuz olabilir. "Ben silebilir böylece dönüş" derken ne demek istediğine emin değilim.

Eğer [topak ()] GLOB_BRACE seçeneği [1] fonksiyonu kullanarak bunu yapabilirsiniz Linux üzerinde olduğunu varsayarsak:

$files = glob('*.{sql,txt}', GLOB_BRACE);

Sen orada da user_id karıştırın olabilir.

Windows üzerinde çalışır emin değilim. http://de.php.net/glob görmek ve GLOB_BRACE seçeneği hakkında not mind.

özyinelemeli bunu yapmak için SPL kullanabilirsiniz

foreach (new DirectoryIterator('/path') as $file) {
    if($file->isDot()) continue;
    $filename = $file->getFilename();
    $pathname = $file->getPathname();
    if ( strpos ($filename ,".sql") !==FALSE ) {
        echo "Found $pathname\n";
        $pos = strpos($filename, $session_data['user_id']);
        ......
        #unlink($pathname); #remove your file
    }
}