PHP 菜鳥(niǎo)教程

PHP 高級(jí)教程

PHP & MySQL

PHP 參考手冊(cè)

PHP 解析目錄

在本教程中,您將學(xué)習(xí)如何使用PHP處理目錄或文件夾。

在PHP中使用目錄

在上一章中,您學(xué)習(xí)了如何在PHP中使用文件。同樣,PHP還允許您使用文件系統(tǒng)上的目錄,例如,您可以打開(kāi)目錄并讀取其內(nèi)容,創(chuàng)建或刪除目錄,列出目錄中的所有文件,等等。

創(chuàng)建一個(gè)新目錄

您可以通過(guò) mkdir() 使用要?jiǎng)?chuàng)建的目錄的路徑和名稱(chēng)來(lái)調(diào)用 PHP 函數(shù)來(lái)創(chuàng)建一個(gè)新的空目錄,如下例所示:

<?php
//目錄路徑
$dir = "testdir";
 
// 檢查目錄是否存在
if(!file_exists($dir)){
    //嘗試創(chuàng)建目錄
    if(mkdir($dir)){
        echo "目錄創(chuàng)建成功。";
    } else{
        echo "錯(cuò)誤:無(wú)法創(chuàng)建目錄。";
    }
} else{
    echo "錯(cuò)誤:目錄已存在。";
}
?>

為了使 mkdir() 函數(shù)工作,已經(jīng)存在于參數(shù)的目錄路徑的父目錄,例如,如果你指定的目錄路徑 testdir/subdirtestdir 以其他方式存在PHP將產(chǎn)生一個(gè)錯(cuò)誤。

將文件從一個(gè)位置復(fù)制到另一個(gè)位置

您可以通過(guò)調(diào)用PHP copy()函數(shù)并將文件的源路徑和目標(biāo)路徑作為參數(shù)來(lái)將文件從一個(gè)位置復(fù)制到另一位置。如果目標(biāo)文件已經(jīng)存在,它將被覆蓋。這是一個(gè)在備份文件夾中創(chuàng)建“ example.txt”文件副本的示例。

<?php
//源文件路徑
$file = "example.txt";
 
//目標(biāo)文件路徑
$newfile = "backup/example.txt";
 
// 檢查文件是否存在
if(file_exists($file)){
    //嘗試復(fù)制文件
    if(copy($file, $newfile)){
        echo "文件復(fù)制成功。";
    } else{
        echo "錯(cuò)誤:無(wú)法復(fù)制文件。";
    }
} else{
    echo "錯(cuò)誤:文件不存在。";
}
?>

為了使該示例生效,必須已經(jīng)存在備份目標(biāo)目錄和源文件“ example.txt”。否則,PHP將產(chǎn)生錯(cuò)誤。

列出目錄中的所有文件

您可以使用PHP scandir()函數(shù)列出指定路徑內(nèi)的文件和目錄。

現(xiàn)在,我們將創(chuàng)建一個(gè)自定義函數(shù),該函數(shù)將使用PHP遞歸列出目錄中的所有文件。如果您正在使用深度嵌套的目錄結(jié)構(gòu),則此腳本將很有幫助。

<?php
//定義一個(gè)函數(shù)以輸出目錄中的文件
function outputFiles($path){
    //檢查目錄是否存在
    if(file_exists($path) && is_dir($path)){
        //掃描此目錄中的文件
        $result = scandir($path);
        
        // 過(guò)濾掉當(dāng)前的(.)和父目錄(..)
        $files = array_diff($result, array('.', '..'));
        
        if(count($files) > 0){
            //循環(huán)遍歷重新調(diào)諧的數(shù)組
            foreach($files as $file){
                if(is_file("$path/$file")){
                    //顯示文件名
                    echo $file . "<br>";
                } else if(is_dir("$path/$file")){
                    //如果找到目錄,則遞歸調(diào)用該函數(shù)
                    outputFiles("$path/$file");
                }
            }
        } else{
            echo "錯(cuò)誤:在目錄中找不到文件。";
        }
    } else {
        echo "錯(cuò)誤:該目錄不存在。";
    }
}
 
//調(diào)用函數(shù)
outputFiles("mydir");
?>		

列出某種類(lèi)型的所有文件

在處理目錄和文件結(jié)構(gòu)時(shí),有時(shí)您可能需要查找目錄中的某些類(lèi)型的文件,例如僅列出文件 .text 或 .png 文件等。您可以使用PHP glob()函數(shù)輕松地做到這一點(diǎn),該函數(shù)根據(jù)模式匹配文件。

以下示例中的PHP代碼將搜索 documents 目錄并列出所有帶有 .text 擴(kuò)展名的文件。它不會(huì)搜索子目錄。

<?php
/* 搜索目錄并循環(huán)瀏覽,返回包含匹配文件的數(shù)組 */
foreach(glob("documents/*.txt") as $file){
    echo basename($file) . " (size: " . filesize($file) . " bytes)" . "<br>";
}
?>

glob()函數(shù)還可用于查找目錄或其子目錄中的所有文件。下例中定義的函數(shù)將遞歸列出目錄中的所有文件,就像我們?cè)谏侠惺褂?scandir() 函數(shù) 所做的那樣。

<?php
//定義函數(shù)以輸出目錄中的文件
function outputFiles($path){
    //檢查目錄是否存在
    if(file_exists($path) && is_dir($path)){
        // 搜索該目錄中的文件
        $files = glob($path ."/*");
        if(count($files) > 0){
            //遍歷重新調(diào)整的數(shù)組
            foreach($files as $file){
                if(is_file("$file")){
                    //僅顯示文件名
                    echo basename($file) . "<br>";
                } else if(is_dir("$file")){
                    //如果找到目錄,則遞歸調(diào)用該函數(shù)
                    outputFiles("$file");
                }
            }
        } else{
            echo "錯(cuò)誤:在目錄中找不到此類(lèi)文件。";
        }
    } else {
        echo "錯(cuò)誤:該目錄不存在。";
    }
}
 
//調(diào)用函數(shù)
outputFiles("mydir");
?>
丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清