Aktueller Standort: Startseite> Neueste Artikel> Praktische Beispiele für die Implementierung von Verzeichnistraversal durch Kombination von Chdir (), Opendir () und Readdir ()

Praktische Beispiele für die Implementierung von Verzeichnistraversal durch Kombination von Chdir (), Opendir () und Readdir ()

gitbox 2025-09-09
<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// Dieser Teil des Codes hat nichts mit dem Inhalt des Artikels zu tun,Machen Sie einfach ein Beispiel</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"PHP Beispiel für das Verzeichnistraversal beginnt&lt;br&gt;"</span></span><span>;
</span><span><span class="hljs-meta">?&gt;</span></span><span>

&lt;hr&gt;

</span><span><span class="hljs-meta">&lt;?php</span></span><span>
<span class="hljs-comment">/**
 * Kombiniert chdir()、opendir() Und readdir() Praktische Beispiele für die Implementierung der Verzeichnistraversal
 *
 * existieren PHP Mitte,操作dokumentierenUndInhaltsverzeichnis是常见需求,Besonders wenn Sie das Verzeichnis durchqueren müssen。
 * chdir() Sie können das aktuelle Arbeitsverzeichnis ändern,opendir() Verwendet, um einen Verzeichnisgriff zu öffnen,
 * readdir() 用于逐个读取InhaltsverzeichnisMitte的dokumentieren或子Inhaltsverzeichnis。
 *
 * Dieser Artikel wird ein Beispiel verabschieden,演示如何Kombiniert这三个函数实现Inhaltsverzeichnis的遍历。
 */</span>

</span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">traverseDir</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$path</span></span></span><span>) {
    </span><span><span class="hljs-comment">// Versuchen Sie zuerst, das Arbeitsverzeichnis zu ändern</span></span><span>
    </span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">chdir</span></span><span>(</span><span><span class="hljs-variable">$path</span></span><span>)) {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Nicht in das Verzeichnis wechseln:<span class="hljs-subst">$path</span></span></span><span>&lt;br&gt;";
        </span><span><span class="hljs-keyword">return</span></span><span>;
    }
    
    </span><span><span class="hljs-comment">// Öffnen Sie das aktuelle Verzeichnis</span></span><span>
    </span><span><span class="hljs-variable">$handle</span></span><span> = </span><span><span class="hljs-title function_ invoke__">opendir</span></span><span>(</span><span><span class="hljs-string">'.'</span></span><span>);
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$handle</span></span><span> === </span><span><span class="hljs-literal">false</span></span><span>) {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Verzeichnishandle kann nicht geöffnet werden&lt;br&gt;"</span></span><span>;
        </span><span><span class="hljs-keyword">return</span></span><span>;
    }
    
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Aktuelles Verzeichnis: "</span></span><span> . </span><span><span class="hljs-title function_ invoke__">getcwd</span></span><span>() . </span><span><span class="hljs-string">"&lt;br&gt;"</span></span><span>;
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Der Inhalt des Verzeichnisses ist wie folgt:&lt;br&gt;"</span></span><span>;
    
    </span><span><span class="hljs-comment">// 遍历InhaltsverzeichnisMitte的dokumentierenUnddokumentieren夹</span></span><span>
    </span><span><span class="hljs-keyword">while</span></span><span> ((</span><span><span class="hljs-variable">$entry</span></span><span> = </span><span><span class="hljs-title function_ invoke__">readdir</span></span><span>(</span><span><span class="hljs-variable">$handle</span></span><span>)) !== </span><span><span class="hljs-literal">false</span></span><span>) {
        </span><span><span class="hljs-comment">// Spezielle Verzeichnisse ignorieren . Und ..</span></span><span>
        </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$entry</span></span><span> === </span><span><span class="hljs-string">'.'</span></span><span> || </span><span><span class="hljs-variable">$entry</span></span><span> === </span><span><span class="hljs-string">'..'</span></span><span>) {
            </span><span><span class="hljs-keyword">continue</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">$entry</span></span><span>)) {
            </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"[Inhaltsverzeichnis] <span class="hljs-subst">$entry</span></span></span><span>&lt;br&gt;";
        } </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] <span class="hljs-subst">$entry</span></span></span><span>&lt;br&gt;";
        }
    }
    
    </span><span><span class="hljs-title function_ invoke__">closedir</span></span><span>(</span><span><span class="hljs-variable">$handle</span></span><span>);
}

</span><span><span class="hljs-comment">// Beispielanruf:Angenommen, es gibt eine test_dir Inhaltsverzeichnis</span></span><span>
</span><span><span class="hljs-variable">$testPath</span></span><span> = </span><span><span class="hljs-string">'test_dir'</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">traverseDir</span></span><span>(</span><span><span class="hljs-variable">$testPath</span></span><span>);
</span></span>