Heim > Backend-Entwicklung > PHP-Problem > So erhalten Sie den gesamten Inhalt eines Verzeichnisses in PHP

So erhalten Sie den gesamten Inhalt eines Verzeichnisses in PHP

醉折花枝作酒筹
Freigeben: 2023-03-10 08:40:02
nach vorne
2300 Leute haben es durchsucht

In diesem Artikel erfahren Sie, wie Sie mit PHP alle Inhalte im Verzeichnis abrufen. Es hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen. Ich hoffe, es wird für alle hilfreich sein.

So erhalten Sie den gesamten Inhalt eines Verzeichnisses in PHP

Dieses Mal stellen wir einen Verzeichnisiterator in der SPL-Bibliothek vor. Seine Funktion ist eigentlich sehr einfach, den gesamten Inhalt im angegebenen Verzeichnis abzurufen. Zuvor mussten wir das Verzeichnis durchqueren, um das Verzeichnis und alle darin enthaltenen Dateien zu erhalten, was im Allgemeinen einen rekursiven Durchlauf erforderte. Um ehrlich zu sein, ist es ziemlich mühsam, diesen Code selbst zu schreiben, daher hat PHP diesen Satz von integrierten Programmen vorbereitet. in APIs für uns Geben Sie dann beim Betreten des angegebenen Verzeichnisses direkt den Inhalt aller Unterverzeichnisse und Dateien im Verzeichnis zurück. Natürlich ist es keine Baumform und die Reihenfolge ist nicht sicher. Wenn wir es in eine Baumform organisieren möchten, müssen wir es selbst verarbeiten.

Schauen wir uns ohne weitere Umschweife einfach den Code an:

$path = $argv[1];

// 获取目录下所有内容
$dirs = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path), RecursiveIteratorIterator::SELF_FIRST);

foreach($dirs as $k=>$d){
    echo 'key:'. $k, PHP_EOL;
    if($d->isDir()){
        echo $d->getPathname(), PHP_EOL;
    }else{
        echo $d->getFilename(), PHP_EOL;
    }
}

//执行 php PHP获取目录中的全部内容RecursiveDirectoryIterator.php ../

// key:../.
// ../.
// key:../..
// ../..
// key:../source
// ../source
// key:../source/.
// ../source/.
// key:../source/..
// ../source/..
// key:../source/PHP获取目录中的全部内容RecursiveDirectoryIterator.php
// PHP获取目录中的全部内容RecursiveDirectoryIterator.php
// key:../source/PHP大文件读取操作.php
// PHP大文件读取操作.php
// key:../PHP大文件读取操作.md
// PHP大文件读取操作.md
// key:../PHP获取目录中的全部内容RecursiveDirectoryIterator.md
// PHP获取目录中的全部内容RecursiveDirectoryIterator.md
Nach dem Login kopieren

Es ist eigentlich nur eine Codezeile, die dann direkt in einer Schleife ausgeführt wird, um den Iterator auszugeben. Aus den Ergebnissen können wir ersehen, dass wir zuerst das Quellverzeichnis eingeben, dann den Inhalt der externen Datei durchlaufen und alle Inhalte im Verzeichnis in der Reihenfolge des Verzeichnisses und des Dateinamens erhalten. Ist das nicht viel praktischer, als die rekursive Funktion selbst zu schreiben?

Was wäre, wenn wir alle PHP-Dateien im Verzeichnis abrufen und ihre Gesamtdateigröße berechnen möchten? Mit diesem Satz von Iteratoroperationen können wir auch ganz einfach einen regulären Iterator hinzufügen, um den Inhalt des vorherigen Iterators zu filtern:

// 获取所有php文件
$regIts = new RegexIterator($dirs, '/^.+\.php$/i');
$fileSize = 0;
foreach($regIts as $k=>$p){
    echo $p->getSize() . ' ' .  $k, PHP_EOL;
    $fileSize += $p->getSize();
}
echo 'Total ', $fileSize, PHP_EOL;

// 622 ../source/PHP获取目录中的全部内容RecursiveDirectoryIterator.php
// 869 ../source/PHP大文件读取操作.php
// Total 1491
Nach dem Login kopieren

Es fühlt sich an wie ls -l, was bequem sein kann . Die Verwendung dieser Klasse wird hier kurz vorgestellt. Es gibt viele Funktionen in der SPL-Bibliothek, die es wert sind, dass wir sie erkunden. Lernen Sie langsam und üben Sie langsam, um unsere Fähigkeiten zur eleganten Programmierung kontinuierlich zu verbessern.

Testcode:

https://github.com/zhangyue0503/dev-blog/blob/master/php/202003/source/PHP%E8%8E%B7%E5%8F%96%E7%9B%AE%E5%BD%95%E4%B8%AD%E7%9A%84%E5%85%A8%E9%83%A8%E5%86%85%E5%AE%B9RecursiveDirectoryIterator.php
Nach dem Login kopieren

Empfohlenes Lernen: php-Video-Tutorial

Das obige ist der detaillierte Inhalt vonSo erhalten Sie den gesamten Inhalt eines Verzeichnisses in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
php
Quelle:segmentfault.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage