首頁 >後端開發 >php教程 >PHP檔案處理—如何讀取檔案(一行,整個檔案)

PHP檔案處理—如何讀取檔案(一行,整個檔案)

黄舟
黄舟原創
2017-04-15 10:55:2110196瀏覽

PHP檔案處理—如何讀取檔案(一行,整個檔案)

#相對開啟和關閉檔案來說,讀寫檔案更複雜一些。這裡主要從讀取資料和寫入資料兩方面進行講解。

那麼在上一篇文章《PHP文件處理—打開和關閉文件》中介紹了打開和關閉文件,打開文件是所有操作文件的前提,而關閉是所有操作文件的結尾,那我們今天就來介紹如何讀取文件!

從檔案讀取資料

從檔案讀取數據,可以讀取一個字元、一行字串或是整個文件,也可以讀取指定長度的字串。

1.讀取整個檔案:readfile()、flie()以及file_get_contents()三個函數,下面我們將一一介紹!

readfile()函數

readfile()函數用於讀入一個檔案並且將其寫入到輸出緩衝,如果發生錯誤則傳回 false。 函數語法格式如下:

int readfile ( string $filename [, bool $use_include_path = false [, resource $context ]] )

使用 readfile()函數,不需要開啟檔案和關閉文件,也不需要 echo ,print等輸出語句,直接先寫出檔案路徑就可以了。

flie()函數

flie()函數也可以讀取整個檔案的內容,只是file()函數將檔案內容按行存放到陣列中,包括換行符在內,如果讀取失敗則傳回false。函數的語法格式如下:

array file ( string $filename [, int $flags = 0 [, resource $context ]] )

file_get_contents()函數

file_get_contents()函數將檔案的內容(fliename)讀入到一個字串中。如果沒有 offset 和 maxlen參數 ,將從參數offset所指定的位置開始讀取長度為 maxlen的字串。如果讀取失敗那麼就會回傳false。函數語法格式如下;

string file_get_contents ( string $filename [, bool $use_include_path = false [, resource $context [, int $offset = -1 [, int $maxlen ]]]] )

此函數適用於二進位文件,是講整個文件的內容讀入到一個字串中的首選方法。

下面的實例就是使用上面的三個函數分數來讀取檔案內容,具體程式碼如下:

<html>
<body>
<table width="500" border="1" cellpadding="0" cellspacing="0" >
    <tr>
        <td width="253" height="100" align="right" valign="middle" scope="col">使用 readfile()函数读取文件内容:</td>
        <td width="241" height="100" valign="middle" scope="col">
            <!--使用 readfile()函数读取tm.txt文件内容-->
            <?php readfile("tm.txt");?></td>
    </tr>
    <tr>
        <td  height="100" align="right" valign="middle">使用 file()函数读取文件内容:</td>
        <td  height="100" valign="middle" >
            <!--使用 file()函数读取tm.txt文件内容-->
            <?php
            $f_arr = file("tm.txt");
            foreach ($f_arr as $cont){
                echo $cont."<br>";
            }
            ?>
        </td>
    </tr>
    <tr>
        <td width="250" height="25" align="right" valign="middle" scope="col">使用flie_get_contents()函数读取文件内容:</td>
        <td  height="25" valign="middle" align="center" scope="col" >
            <!--使用 flie_get_contents()函数读取tm.txt文件内容-->
        <?php
            $f_chr = file_get_contents("tm.txt");
        echo $f_chr;
        ?>
        </td>
    </tr>
</table>
</body>
</html>

輸出結果為:

PHP檔案處理—如何讀取檔案(一行,整個檔案)

2.讀取一行資料:fgets()函數與fgetss()函數

(1) fgets()函數

fgets()函數用於一次讀取一行資料。函數語法格式如下:

string fgets ( resource $handle [, int $length ] )

參數 handle 是被讀取的文件,參數length是要讀取的資料長度。函數能夠實作從 handle 指定檔案中讀取一行並傳回長度最大值為 length-1 個位元組的字串。在於帶換行符,EOF 或讀取了 length-1 個自己後停止。如果忽略  length-1 參數,那麼讀取資料直到行結束。

(2)fgetss()函數

fgetss()函數是fgets()函數的變體,用來讀取一行資料。同事,fgetss()函數會過濾掉被讀取內容中的 HTML 和 PHP標記。函數語法格式如下:

string fgetss ( resource $handle [, int $length [, string $allowable_tags ]] )

函數能夠從讀取的檔案中過濾掉任何 html 和 PHP 標記,可以使用 allowable_tags 參數來控制哪些標記不被過濾掉。

下面實例使用上面那個函數分別讀取一個文件,並顯示出來。觀察它們有什麼區別。具體程式碼如下:

<html>
<body>
<table  border="1" cellpadding="0" cellspacing="0" >
    <tr>
        <td align="right" valign="middle" scope="col">使用fgets()函数:</td>
        <td valign="middle" scope="col" align="center">
            <!--使用fgets()函数读取fun.php文件-->
            <?php
             $fopen = fopen("1.php","rb");
            while (!feof($fopen)){
                echo fgets($fopen);
            }
            fclose($fopen);
            ?></td>
    </tr>
    <tr>
        <td  align="right" valign="middle">使用 fgetss()函数:</td>
        <td  align="center" valign="middle" >
            <!--使用fgetss()函数读取-->
            <?php
            $fopen = fopen("1.php","rb");
            while (!feof($fopen)){
                echo fgetss($fopen);
            }
            fclose($fopen);
            ?></td>
    </tr>
</table>
</body>
</html>

輸出結果為:

PHP檔案處理—如何讀取檔案(一行,整個檔案)

本篇介紹了兩種讀取文件的方法,一個是讀取整個文件,一個是讀取一行資料的,在下面一篇文章我將介紹讀取一個字元和指定長度的字符串,具體內容請閱讀《PHP檔案處理—讀取檔案(一個字元,字符串)》!

以上是PHP檔案處理—如何讀取檔案(一行,整個檔案)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn