2010-12-09 20 views
0

Ich versuche, alle Dateien zu finden, die "testunit.php" genannt. Zusätzlich möchte ich die ersten 23 Zeichen der Saite schneiden.rekursive spezifische Datei finden

Ich habe das versucht, aber das funktioniert nicht.Ich bekomme alle Dateien.

$it = new RecursiveDirectoryIterator($parent); 
$display = Array ('testunit.php'); 
foreach (new RecursiveIteratorIterator($it) as $file=>$cur) { 
{ 
if (In_Array ($cur, $display) == true) 
       $file = substr($cur, 23) 
       fwrite($fh,"<file>$file</file>"); 

} 

Vielen Dank!

+0

Schauen Sie z.B. Hier. http://www.php.net/manual/en/class.recursedirectoryiterator.php#92233 Sie holen die Informationen falsch in der Schleife, es muss 'as $ file => $ cursor' sein ('cursor' ist ein Iterator-Objekt) –

+0

Es funktioniert nicht .. Ich habe versucht, 'foreach (new RecursiveIteratorIterator ($ it) als $ file => $ cur) {' – Ronny

+0

Es ist ok jetzt..thank Sie – Ronny

Antwort

1

sehen, ob glob hilft Ihnen

+2

Warum? Der 'RecursiveDirectoryIterator' ist neu, ausgefallen, OOP und kann rekursiv recherchieren. Wenn er seinen bestehenden Code behebt, hat er eine Lösung, die 'glob()' überlegen ist –

0

Versuchen

class TestUnitIterator extends FilterIterator 
{ 
    public function accept() 
    { 
     return (FALSE !== strpos(
      $this->getInnerIterator()->current(), 
      'testunit.php' 
     )); 
    } 
    public function current() 
    { 
     return sprintf(
      '<file>%s</file>', 
      substr($this->getInnerIterator()->current(), 23) 
     ); 
    } 
} 

Usage (codepad (abridged example)):

$iterator = new TestUnitIterator(
    new RecursiveIteratorIterator(
     new RecursiveDirectoryIterator(
      '/path/to/iterate/over', 
      FilesystemIterator::CURRENT_AS_PATHNAME 
     ) 
    ) 
); 
foreach ($iterator as $file) { 
    echo $file, PHP_EOL; 
} 

Haftungsausschluss: Ich war nicht in der Stimmung, das Dateisystem zu verspotten oder Richten Sie die erforderlichen Testdateien ein, sodass die oben genannten Schritte möglicherweise ein wenig optimiert werden müssen, um mit dem Dateisystem zu arbeiten . Ich habe nur mit einem ArrayIterator getestet, aber es sollte nicht viel zu tun geben, wenn das obige Fehler erzeugt.

Verwandte Themen