PHP 菜鳥教程

PHP 高級教程

PHP & MySQL

PHP 參考手冊

PHP 文件(File)

在本教程中,您將學(xué)習(xí)如何使用PHP的文件系統(tǒng)函數(shù)動態(tài)創(chuàng)建,訪問(或讀?。┖筒倏v文件。

使用PHP處理文件

由于PHP是服務(wù)器端編程語言,因此它使您可以使用Web服務(wù)器上存儲的文件和目錄。在本教程中,您將學(xué)習(xí)如何使用PHP文件系統(tǒng)函數(shù)在Web服務(wù)器上創(chuàng)建,訪問和操作文件。

用PHP fopen() 函數(shù)打開文件

要使用文件,首先需要打開文件。PHP fopen()函數(shù)用于打開文件。該函數(shù)的基本語法可以通過以下方式給出:

fopen(filename, mode)

傳遞給fopen()的第一個參數(shù)指定要打開的文件的名稱,第二個參數(shù)指定應(yīng)以哪種模式打開文件。 例如:

<?php
$handle = fopen("data.txt", "r");
?>
測試看看?/?

可以通過以下方式之一打開文件:

模式它能做什么
r打開文件只讀。
r+打開文件進行讀寫。
w打開僅用于寫入的文件,并清除文件內(nèi)容。如果該文件不存在,PHP將嘗試創(chuàng)建它。
w+打開文件進行讀寫,并清除文件內(nèi)容。如果該文件不存在,PHP將嘗試創(chuàng)建它。
a追加。打開僅用于寫入的文件。通過寫入文件末尾來保留文件內(nèi)容。如果該文件不存在,PHP將嘗試創(chuàng)建它。
a+讀取/追加。打開文件進行讀寫。通過寫入文件末尾來保留文件內(nèi)容。如果該文件不存在,PHP將嘗試創(chuàng)建它。
x打開僅用于寫入的文件。 如果文件已存在,則返回False并生成錯誤。 如果該文件不存在,PHP將嘗試創(chuàng)建它。
x+打開文件進行讀寫;否則,其行為與“ x”相同。

如果您試圖打開一個不存在的文件,PHP將生成一條警告消息。因此,為了避免這些錯誤消息,在嘗試訪問某個文件或目錄之前,應(yīng)該使用PHP file_exists()函數(shù)實現(xiàn)一個簡單的檢查,檢查文件或目錄是否存在。

<?php
$file = "data.txt";
 
//檢查文件是否存在
if(file_exists($file)){
    // 嘗試打開該文件
    $handle = fopen($file, "r");
} else{
    echo "ERROR: File does not exist.";
}
?>
測試看看?/?

提示:對文件和目錄的操作容易出錯。因此,實現(xiàn)某種形式的錯誤檢查是一個好習(xí)慣,這樣,如果發(fā)生錯誤,您的腳本將可以優(yōu)雅地處理錯誤。請參考有關(guān)PHP錯誤處理的教程。

使用PHP fclose()函數(shù)關(guān)閉文件

使用完文件后,需要將其關(guān)閉。fclose()函數(shù)用于關(guān)閉文件,如以下示例所示:

<?php
$file = "data.txt";
 
//檢查文件是否存在
if(file_exists($file)){
    //打開要讀取的文件
    $handle = fopen($file, "r") or die("ERROR: Cannot open the file.");
        
    /* 這里是一些要執(zhí)行的代碼 */
        
    //正在關(guān)閉文件句柄
    fclose($handle);
} else{
    echo "ERROR: File does not exist.";
}
?>
測試看看?/?

注意:雖然PHP會在腳本終止時自動關(guān)閉所有打開的文件,但最好在執(zhí)行所有操作后關(guān)閉文件。

使用PHP fread()函數(shù)從文件讀取

現(xiàn)在您已經(jīng)了解了如何打開和關(guān)閉文件。 在下一節(jié)中,您將學(xué)習(xí)如何從文件中讀取數(shù)據(jù)。 PHP有幾個用于從文件讀取數(shù)據(jù)的函數(shù)。 您可以使用單個操作從一個字符讀取整個文件。

讀取固定數(shù)量的字符

fread()函數(shù)可用于從文件中讀取指定數(shù)量的字符??梢允褂么撕瘮?shù)的基本語法。

fread(file handle, length in bytes)

此函數(shù)接受兩個參數(shù)-文件句柄和要讀取的字節(jié)數(shù)。 下面的示例從“data.txt”文件讀取20個字節(jié),包括空格。 假設(shè)文件“data.txt”包含一段文本“The quick brown fox jumps over the lazy dog.”。

<?php
$file = "data.txt";
 
//檢查文件是否存在
if(file_exists($file)){
    //打開要讀取的文件
    $handle = fopen($file, "r") or die("ERROR: Cannot open the file.");
        
    //從文件中讀取固定的字節(jié)數(shù)
    $content = fread($handle, "20");
        
    //關(guān)閉文件的句柄
    fclose($handle);
        
    //顯示文件內(nèi)容
    echo $content;
} else{
    echo "ERROR: File does not exist.";
}
?>
測試看看?/?

上面的示例將產(chǎn)生以下輸出:

The quick brown fox

讀取文件的全部內(nèi)容

fread()函數(shù)可以與filesize()函數(shù)結(jié)合使用,一次讀取整個文件。filesize()函數(shù)的作用是:以字節(jié)為單位返回文件的大小。

<?php
$file = "data.txt";
 
//檢查文件是否存在
if(file_exists($file)){
    //打開要讀取的文件
    $handle = fopen($file, "r") or die("ERROR: Cannot open the file.");
        
    //正在讀取整個文件
    $content = fread($handle, filesize($file));
        
    //正在關(guān)閉文件句柄
    fclose($handle);
        
    //顯示文件內(nèi)容
    echo $content;
} else{
    echo "ERROR: File does not exist.";
}
?>
測試看看?/?

上面的示例將產(chǎn)生以下輸出:

The quick brown fox jumps over the lazy dog.

在PHP中讀取文件全部內(nèi)容的最簡單方法是使用readfile()函數(shù)。此函數(shù)允許您在不需要打開文件的情況下讀取文件的內(nèi)容。以下示例將生成與上述示例相同的輸出:

<?php
$file = "data.txt";
 
//檢查文件是否存在
if(file_exists($file)){
    //讀取并輸出整個文件
    readfile($file) or die("ERROR: Cannot open the file.");
} else{
    echo "ERROR: File does not exist.";
}
?>
測試看看?/?

上面的示例將產(chǎn)生以下輸出:

The quick brown fox jumps over the lazy dog.

另一種無需打開即可讀取文件全部內(nèi)容的方法是使用file_get_contents()函數(shù)。此函數(shù)接受文件的名稱和路徑,并將整個文件讀入字符串變量。下面是一個實例:

<?php
$file = "data.txt";
 
//檢查文件是否存在
if(file_exists($file)){
    // 將整個文件讀入字符串
    $content = file_get_contents($file) or die("ERROR: Cannot open the file.");
        
    //顯示文件內(nèi)容
    echo $content;
} else{
    echo "ERROR: File does not exist.";
}
?>
測試看看?/?

從文件讀取全部數(shù)據(jù)的另一種方法是PHP的file()函數(shù)。 它的功能與file_get_content()函數(shù)類似,但它將文件內(nèi)容作為行數(shù)組返回,而不是以單個字符串的形式返回。 返回的數(shù)組的每個元素對應(yīng)于文件中的一行。

要處理文件數(shù)據(jù),您需要使用foreach循環(huán)遍歷數(shù)組。這是一個示例,該示例將文件讀入數(shù)組,然后使用循環(huán)顯示它:

<?php
$file = "data.txt";
 
//檢查文件是否存在
if(file_exists($file)){
    //將整個文件讀入數(shù)組
    $arr = file($file) or die("ERROR: Cannot open the file.");
    foreach($arr as $line){
        echo $line;
    }
} else{
    echo "ERROR: File does not exist.";
}
?>
測試看看?/?

使用PHP fwrite() 函數(shù)寫入文件

同樣,您可以使用PHP fwrite()函數(shù)將數(shù)據(jù)寫入文件或追加到現(xiàn)有文件。該函數(shù)的基本語法可以通過以下方式給出:

fwrite(file handle, string)

fwrite()函數(shù)接受兩個參數(shù)—文件句柄和要寫入的數(shù)據(jù)字符串,如以下示例所示:

<?php
$file = "note.txt";
    
//要寫入的數(shù)據(jù)字符串
$data = "The quick brown fox jumps over the lazy dog.";
    
//打開文件進行寫入
$handle = fopen($file, "w") or die("ERROR: Cannot open the file.");
    
//將數(shù)據(jù)寫入文件
fwrite($handle, $data) or die ("ERROR: Cannot write the file.");
    
//關(guān)閉文件句柄
fclose($handle);
    
echo "數(shù)據(jù)已成功寫入文件。";
?>

在上面的示例中,如果“ note.txt”文件不存在,PHP將自動創(chuàng)建該文件并寫入數(shù)據(jù)。但是,如果“ note.txt”文件已經(jīng)存在,PHP將在寫入新數(shù)據(jù)之前擦除此文件的內(nèi)容(如果有的話),但是,如果您只想追加文件并保留現(xiàn)有內(nèi)容,上面的示例請使用模式 a而不是w。

另一種方法是使用file_put_contents()函數(shù)。它是file_get_contents()函數(shù)的對應(yīng)功能,提供了一種無需打開即可將數(shù)據(jù)寫入文件的簡便方法。該函數(shù)接受文件的名稱和路徑以及要寫入文件的數(shù)據(jù)。這是一個實例:

<?php
$file = "note.txt";
    
//要寫入的數(shù)據(jù)字符串
$data = "The quick brown fox jumps over the lazy dog.";
    
//將數(shù)據(jù)寫入文件
file_put_contents($file, $data) or die("ERROR: Cannot write the file.");
    
echo "數(shù)據(jù)已成功寫入文件。";
?>

如果file_put_contents()函數(shù)中指定的文件已經(jīng)存在,則默認(rèn)情況下PHP將覆蓋它。如果要保留文件的內(nèi)容,可以將特殊FILE_APPEND標(biāo)志作為第三個參數(shù)傳遞給file_put_contents()函數(shù)。它將簡單地將新數(shù)據(jù)追加到文件中,而不是覆蓋它。這是一個實例:

<?php
$file = "note.txt";
    
//要寫入的數(shù)據(jù)字符串
$data = "The quick brown fox jumps over the lazy dog.";
    
//將數(shù)據(jù)寫入文件
file_put_contents($file, $data, FILE_APPEND) or die("ERROR: Cannot write the file.");
    
echo "數(shù)據(jù)已成功寫入文件。";
?>

用PHP rename()函數(shù)重命名文件

您可以使用PHP的rename()函數(shù)重命名文件或目錄,如下所示:

<?php
$file = "file.txt";
 
//檢查文件是否存在
if(file_exists($file)){
    //嘗試重命名文件
    if(rename($file, "newfile.txt")){
        echo "文件重命名成功。";
    } else{
        echo "錯誤:無法重命名文件。";
    }
} else{
    echo "錯誤:文件不存在。";
}
?>

使用PHP unlink()函數(shù)刪除文件

您可以使用PHP的unlink()函數(shù)刪除文件或目錄,如下所示:

<?php
$file = "note.txt";
 
//檢查文件是否存在
if(file_exists($file)){
    //嘗試刪除該文件
    if(unlink($file)){
        echo "文件已成功刪除。";
    } else{
        echo "錯誤:無法刪除文件。";
    }
} else{
    echo "錯誤:文件不存在。";
}
?>

在下一章中,我們將學(xué)習(xí)有關(guān)在PHP中解析目錄或文件夾的更多信息。

PHP文件系統(tǒng)函數(shù)

下表概述了一些其他有用的PHP文件系統(tǒng)函數(shù),這些函數(shù)可用于動態(tài)讀取和寫入文件。

函數(shù)
描述
fgetc()一次讀取一個字符。
fgets()一次讀取一行。
fgetcsv()讀取一行用逗號分隔的值。
filetype()返回文件的類型。
feof()檢查是否已到達文件末尾。
is_file()檢查文件是否為常規(guī)文件。
is_dir()檢查文件是否為目錄。
is_executable()檢查文件是否可執(zhí)行。
realpath()返回規(guī)范化的絕對路徑名。
rmdir()刪除一個空目錄。

請查看PHP文件系統(tǒng)參考,以獲取其他有用的PHP文件系統(tǒng)函數(shù)。

丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清