Aktueller Standort: Startseite> Neueste Artikel> Wie kombinieren Sie IS_DIR () und Glob () -Funktionen, um Dateien zu erhalten, die einem bestimmten Verzeichnis entsprechen?

Wie kombinieren Sie IS_DIR () und Glob () -Funktionen, um Dateien zu erhalten, die einem bestimmten Verzeichnis entsprechen?

M66 2025-07-04

Wie kombinieren Sie IS_DIR () und Glob () -Funktionen, um Dateien zu erhalten, die einem bestimmten Verzeichnis entsprechen?

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.

1. Einführung in die Funktion is_dir ()

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>

2. Einführung in die Funktion von Glob ()

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>

3. Kombinieren Sie IS_DIR () und Glob () Funktionen

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.

Beispiel: Finden Sie alle .PHP -Dateien in einem bestimmten Verzeichnis

 <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>

Beispiel: Suchen Sie alle Dateien, beginnend mit Test_ in einem bestimmten Verzeichnis

 <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>

4. In Kombination mit rekursiver Suche nach Dateien im Verzeichnis

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.

Beispiel: Finden Sie rekursiv alle .txt -Dateien

 <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>

5. Zusammenfassung

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.