Heim  >  Artikel  >  Backend-Entwicklung  >  Einführung in verschiedene Methoden zum Durchsuchen von Verzeichnissen und Ordnern in PHP

Einführung in verschiedene Methoden zum Durchsuchen von Verzeichnissen und Ordnern in PHP

伊谢尔伦
伊谢尔伦Original
2017-07-08 11:47:032002Durchsuche

Einführung mehrerer PHPVerzeichnisse durchquerenMethoden, die Verzeichnisse und Dateien in Verzeichnissen durchqueren können, als Referenz

Verzeichnisse oder Dateien bestimmter Typen unter Verzeichnissen durchqueren Dies gilt für jedes A Beim Schreiben eines Programms wird zwangsläufig der Kinderschuh zum Einsatz kommen. PHP selbst bietet auch viele sehr nützliche Funktionen, wenn Sie sie richtig verwenden, werden Sie nichts falsch machen.
Diese Funktion kann alle Dateien im angegebenen Verzeichnis (einschließlich Unterverzeichnissen) auflisten

Der Code lautet wie folgt:

function getfiles($path){ 
foreach
(scandir($path) as $afile)
{
if($afile=='.'||$afile=='..') 
continue; 
if(is_dir($path.'/'.$afile)) 
{ 
getfiles($path.'/'.$afile); 
} else { 
echo $path.&#39;/&#39;.$afile.&#39;<br />&#39;; 
} 
} 
} //简单的demo,列出当前目录下所有的文件
getfiles(DIR);

scandir() gibt das angegebene Verzeichnis zurück. Ein Array bestehend aus allen Dateien und Verzeichnissen. In PHP gibt es auch eine sehr leistungsfähige Funktion glob(). Der zweite Parameter ist optional und wird später besprochen. Schauen wir uns direkt an, wie man Verzeichnisse mit glob() durchläuft.
Es ist ersichtlich, dass „.“ und „..“ aus dem von glob() zurückgegebenen Inhalt herausgefiltert wurden, wobei * das Durchlaufen aller Dateien im Verzeichnis bedeutet. Wenn es in *.txt geändert wird, werden entsprechend alle TXT-Dateien im Verzeichnis durchlaufen. Ist das nicht sehr praktisch? Seine Bequemlichkeit beschränkt sich nicht nur darauf, laut Yuan Fang verbirgt sich darin auch ein großes Geheimnis. Wir werden später darüber sprechen. Wenn Sie interessiert sind, können Sie mir eine Nachricht hinterlassen.

Der Code lautet wie folgt:

function getfiles($path){ 
foreach(glob($path) as $afile){ 
if(is_dir($afile)) 
{ getfiles($afile.&#39;/*&#39;); } else { echo $afile.&#39;<br />&#39;; } 
} 
} //简单的demo,列出当前目录下所有的文件
getfiles(DIR);0


Da *.txt verwendet wird, durchläuft es alle TXT-Dateien im Verzeichnis, wenn ich das möchte Durchqueren Sie ein bestimmtes Was sind die Dateiformate? was zu tun? Irgendein Kind muss daran gedacht haben, ein Array zu verwenden, hat es dann schnell ausgeschrieben und durch {*.txt,*.jpg,*.zip,...} ersetzt. Natürlich haben sie auch schnell herausgefunden, dass das Programm false zurückgegeben hat und habe nichts bekommen. Seien Sie nicht enttäuscht, es handelt sich hierbei um den zweiten optionalen Parameter, der zum Ändern des Verhaltens von Glob verwendet wird. Weitere Informationen finden Sie im PHP-Handbuch . Sagen Sie eine GLOB_BRACE, die verwendet wird, um {a,b,c,...} so zu erweitern, dass sie mit „a“, „b“ oder „c“ übereinstimmt,... Die Verwendung ist wie folgt: foreach(glob($path.'/{*.txt,*.jpg,*.zip,...}', GLOB_BRACE) as $fileName){...}
Wie für die vollständige Verzeichnisdurchquerung Wir können das folgende Beispiel für alle angegebenen Dateitypfunktionen sehen:

Alle Dateien im Ordner und Unterordnern durchsuchen

Der Code ist wie folgt folgt:

<html>
    <body>
        <?php
            function traverse($path = &#39;.&#39;) {
                $current_dir = opendir($path);    //opendir()返回一个目录句柄,失败返回false
                while(($file = readdir($current_dir)) !== false) {    //readdir()返回打开目录句柄中的一个条目
                    $sub_dir = $path . DIRECTORY_SEPARATOR . $file;    //构建子目录路径
                    if($file == &#39;.&#39; || $file == &#39;..&#39;) {
                        continue;
                    } else if(is_dir($sub_dir)) {    //如果是目录,进行递归
                        echo &#39;Directory &#39; . $file . &#39;:<br>&#39;;
                        traverse($sub_dir);
                    } else {    //如果是文件,直接输出
                        echo &#39;File in Directory &#39; . $path . &#39;: &#39; . $file . &#39;<br>&#39;;
                    }
                }
            }
            traverse(&#39;xxtt&#39;);
        ?>
    </body>
</html>

Einige häufig verwendete Beispiele

Der Code lautet wie folgt:

<?php
$dir="E:/video"; //这里输入其它路径
//PHP遍历文件夹下所有文件
$handle=opendir($dir."."); 
echo "文件:<br>";
while (false !== ($file = readdir($handle)))
{
if ($file != "." && $file != "..") {
echo $file; //输出文件名
}
}
closedir($handle); 
?>

Ich habe diesen Code verwendet, um alle Dateien zu durchlaufen und alle zu speichern Dateinamen als Array für mich.

Der Code lautet wie folgt:

<?php
$s=explode("/n",trim(`dir/b e://video`));
print_r($s);
?>
<?php 
$dir="E:/video"; //这里输入其它路径 
//PHP遍历文件夹下所有文件 
$handle=opendir($dir."."); 
echo "文件:<br>"; 
while (false !== ($file = readdir($handle))) 
{ 
if ($file != "." && $file != "..") { 
$file=$file.&#39;,&#39;; //输出文件名 
$file=explode(&#39;,&#39;,$file);
} 
} 
print_r($file);//输出的就是数组了
closedir($handle); 
?>
<?php 
$dir="."; //这里输入其它路径 
//PHP遍历文件夹下所有文件 
$handle=opendir($dir."."); 
echo "文件:<br>"; 
//定义用于存储文件名的数组
$array_file = array();
while (false !== ($file = readdir($handle))) 
{ 
if ($file != "." && $file != "..") { 
$array_file[] = $file; //输出文件名 
} 
} 
closedir($handle);
print_r("<pre class="brush:php;toolbar:false">");
print_r($array_file);
print_r("
"); ?>


Das obige ist der detaillierte Inhalt vonEinführung in verschiedene Methoden zum Durchsuchen von Verzeichnissen und Ordnern in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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