In PHP ist die Manipulation von Dateien und Verzeichnissen eine sehr häufigste Voraussetzung. is_dir () und glob () sind zwei sehr nützliche Funktionen, die uns helfen, die Existenz von Verzeichnissen zu überprüfen und passende Dateien zu finden. In diesem Artikel wird vorgestellt, wie diese beiden Funktionen kombiniert werden, um Dateien zu erhalten, die mit einem bestimmten Verzeichnis übereinstimmen. Die spezifischen Anwendungsszenarien enthalten Filterung basierend auf Dateierweiterungen, Dateinamenmustern usw.
Die Funktion is_dir () wird verwendet, um festzustellen, ob ein Pfad ein Verzeichnis ist. Geben Sie True zurück, wenn der Pfad auf ein Verzeichnis zeigt, ansonsten falsch .
<span><span><span class="hljs-variable">$isDirectory</span></span><span> = </span><span><span class="hljs-title function_ invoke__">is_dir</span></span><span>(</span><span><span class="hljs-string">'path/to/directory'</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$isDirectory</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">'Dies ist ein Verzeichnis'</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">'Dies ist kein Verzeichnis'</span></span><span>;
}
</span></span>
Die Glob () -Funktion wird verwendet, um einen Pfad zu finden, der einem bestimmten Muster entspricht. Es kann nach Dateien suchen, indem Sie Wildcards angeben und ein passendes Array von Dateipfaden zurückgeben. Zum Beispiel gibt Glob ('*. TXT') alle .txt -Suffix -Dateien zurück.
<span><span><span class="hljs-variable">$files</span></span><span> = </span><span><span class="hljs-title function_ invoke__">glob</span></span><span>(</span><span><span class="hljs-string">'path/to/directory/*.txt'</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$files</span></span><span>); </span><span><span class="hljs-comment">// Alle Übereinstimmungen ausgeben *.txt Dateipfad für Muster</span></span><span>
</span></span>
Durch die Verwendung einer Kombination von IS_DIR () und GLIP () können wir Befunddateien implementieren, die ein bestimmtes Muster in einem bestimmten Verzeichnis entsprechen, und nur dann suchen, wenn dieses Verzeichnis vorliegt. Dies vermeidet bedeutungslose Dateisuche, wenn das Verzeichnis nicht vorhanden ist.
<span><span><span class="hljs-variable">$directory</span></span><span> = </span><span><span class="hljs-string">'path/to/directory'</span></span><span>;
</span><span><span class="hljs-comment">// Zuerst verwenden is_dir() Überprüfen Sie, ob das Verzeichnis existiert</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">is_dir</span></span><span>(</span><span><span class="hljs-variable">$directory</span></span><span>)) {
</span><span><span class="hljs-comment">// Wenn das Verzeichnis existiert,Verwenden glob() Finden Sie alle .php dokumentieren</span></span><span>
</span><span><span class="hljs-variable">$phpFiles</span></span><span> = </span><span><span class="hljs-title function_ invoke__">glob</span></span><span>(</span><span><span class="hljs-variable">$directory</span></span><span> . </span><span><span class="hljs-string">'/*.php'</span></span><span>);
</span><span><span class="hljs-comment">// 输出匹配的dokumentieren</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$phpFiles</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Finden Sie Folgendes PHP dokumentieren:\n"</span></span><span>;
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$phpFiles</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$file</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$file</span></span><span> . </span><span><span class="hljs-string">"\n"</span></span><span>;
}
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Nichts wurde gefunden .php dokumentieren。\n"</span></span><span>;
}
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Das angegebene Verzeichnis existiert nicht。\n"</span></span><span>;
}
</span></span>
<span><span><span class="hljs-variable">$directory</span></span><span> = </span><span><span class="hljs-string">'path/to/directory'</span></span><span>;
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">is_dir</span></span><span>(</span><span><span class="hljs-variable">$directory</span></span><span>)) {
</span><span><span class="hljs-variable">$testFiles</span></span><span> = </span><span><span class="hljs-title function_ invoke__">glob</span></span><span>(</span><span><span class="hljs-variable">$directory</span></span><span> . </span><span><span class="hljs-string">'/test_*'</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$testFiles</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Finden Sie Folgendes以 'test_' 开头的dokumentieren:\n"</span></span><span>;
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$testFiles</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$file</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$file</span></span><span> . </span><span><span class="hljs-string">"\n"</span></span><span>;
}
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"没有找到符合条件的dokumentieren。\n"</span></span><span>;
}
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Das Verzeichnis existiert nicht。\n"</span></span><span>;
}
</span></span>
Manchmal müssen wir nicht nur Dateien in einem bestimmten Verzeichnis nachschlagen, sondern auch rekursiv in seinen Unterverzeichnissen suchen. Zu diesem Zeitpunkt können wir IS_DIR () , Glob () und rekursive Funktionen kombinieren, um diese Funktion zu erreichen.
<span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">recursiveGlob</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$dir</span></span></span><span>, </span><span><span class="hljs-variable">$pattern</span></span><span>) {
</span><span><span class="hljs-comment">// Überprüfen Sie, ob das Verzeichnis existiert</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">is_dir</span></span><span>(</span><span><span class="hljs-variable">$dir</span></span><span>)) {
</span><span><span class="hljs-keyword">return</span></span><span> [];
}
</span><span><span class="hljs-variable">$files</span></span><span> = </span><span><span class="hljs-title function_ invoke__">glob</span></span><span>(</span><span><span class="hljs-variable">$dir</span></span><span> . </span><span><span class="hljs-string">'/'</span></span><span> . </span><span><span class="hljs-variable">$pattern</span></span><span>);
</span><span><span class="hljs-variable">$directories</span></span><span> = </span><span><span class="hljs-title function_ invoke__">glob</span></span><span>(</span><span><span class="hljs-variable">$dir</span></span><span> . </span><span><span class="hljs-string">'/*'</span></span><span>, GLOB_ONLYDIR);
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$directories</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$directory</span></span><span>) {
</span><span><span class="hljs-variable">$files</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_merge</span></span><span>(</span><span><span class="hljs-variable">$files</span></span><span>, </span><span><span class="hljs-title function_ invoke__">recursiveGlob</span></span><span>(</span><span><span class="hljs-variable">$directory</span></span><span>, </span><span><span class="hljs-variable">$pattern</span></span><span>)); </span><span><span class="hljs-comment">// Rekursive Suche nach Unterverzeichnissen</span></span><span>
}
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$files</span></span><span>;
}
</span><span><span class="hljs-variable">$directory</span></span><span> = </span><span><span class="hljs-string">'path/to/directory'</span></span><span>;
</span><span><span class="hljs-variable">$txtFiles</span></span><span> = </span><span><span class="hljs-title function_ invoke__">recursiveGlob</span></span><span>(</span><span><span class="hljs-variable">$directory</span></span><span>, </span><span><span class="hljs-string">'*.txt'</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$txtFiles</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Finden Sie Folgendes .txt dokumentieren:\n"</span></span><span>;
</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$txtFiles</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$file</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$file</span></span><span> . </span><span><span class="hljs-string">"\n"</span></span><span>;
}
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Nichts wurde gefunden .txt dokumentieren。\n"</span></span><span>;
}
</span></span>
Durch Kombination von IS_DIR () und GLIP () -Funktionen können wir leicht Dateien finden und verarbeiten. In der tatsächlichen Entwicklung können diese beiden Funktionen uns dabei helfen, Dateien effektiv zu filtern und nicht in nicht existierenden Verzeichnissen zu arbeiten. Mit einfacher Kombination und rekursiver Verarbeitung können leistungsstarke und flexible Dateisuchfunktionen erreicht werden.