Recursive File Search (PHP)

3 Cevap php

I'm trying to return the files in a specified directory using a recursive search. I successfully achieved this, however I want to add a few lines of code that will allow me to specify certain extensions that I want to be returned.

Örneğin, yalnızca geri dönmek. Jpg dosyaları dizinde.

İşte benim kod,

<?php
$it = new RecursiveDirectoryIterator("L:\folder\folder\folder");
foreach(new RecursiveIteratorIterator($it) as $file) {
echo $file . "<br/> \n";
}
?>

teşekkürler, bana bunu başarmak için yukarıdaki kodu ekleyebilirsiniz ne bildirin lütfen

3 Cevap

Sen bir filtre oluşturmanız gerekir:

class JpegOnlyFilter extends RecursiveFilterIterator
{
    public function __construct($iterator)
    {
    	parent::__construct($iterator);
    }

    public function accept()
    {
    	return $this->current()->isFile() && preg_match("/\.jpe?g$/ui", $this->getFilename());
    }

    public function __toString()
    {
    	return $this->current()->getFilename();
    }
}

$it = new RecursiveDirectoryIterator("L:\folder\folder\folder");
$it = new JpegOnlyFilter($it);
$it = new RecursiveIteratorIterator($it);

foreach ($it as $file)
    ...

Bu deneyin, izin verilen dosya türlerini bir dizi kullanır ve dosya uzantısı dizi içinde varsa ancak dosyayı echos.

<?php
$it = new RecursiveDirectoryIterator("L:\folder\folder\folder");
$allowed=array("pdf","txt");
foreach(new RecursiveIteratorIterator($it) as $file) {
    if(in_array(substr($file, strrpos($file, '.') + 1),$allowed)) {
        echo $file . "<br/> \n";
    }
}
?>

Ayrıca size RecursiveDirectoryIterator sınıfa izin verilen dosya türlerini bir dizi geçmek ve sadece maç dosyaları geri dönebilirler bulabilirsiniz.

Benzer bir arama için glob () kullanımı hakkında bu sayfayı kontrol etmek isteyebilirsiniz:

http://www.electrictoolbox.com/php-glob-find-files/