首頁 > 後端開發 > PHP問題 > PHP中怎樣讀取檔案? (分享總結)

PHP中怎樣讀取檔案? (分享總結)

WBOY
發布: 2023-03-13 11:14:01
原創
5102 人瀏覽過

在先前的文章中為大家帶來了《讓人心動的PHP的正則表達式基礎(圖例詳解)》,主要講述了PHP正則表達式的基礎知識以及通過示例來進行使用學習。本篇文章繼續來學習PHP檔案系統的相關知識。希望對大家有幫助!

PHP中怎樣讀取檔案? (分享總結)

在我們使用電腦時,我們都會使用電腦來開啟關閉一個文件,建立一個文件或上傳一個文件。那麼這些操作在程式碼裡能不能做呢?如果能做的話,應該怎麼做?其實很簡單,學習文件處理其實就是學習文件處理的函數,再結合之前所學習的內容。那接下來我們就一起來看看吧。

讀取檔案算是我們再日常使用中最常見的一個操作了,那麼再程式碼裡要怎麼實作。

下面來介紹如何使用 PHP 中的函數來讀取檔案內容。

fgetc():從檔案中讀取一個字元

在使用這些函數讀取檔案之前,我們需要先在伺服器根目錄下建立一個文字檔案(這裡我們以text.txt 為例),文字內容如下:

PHP中怎樣讀取檔案? (分享總結)

接下來我們來看, fgetc()在使用中應該怎樣去用,輸出的結果又是如何:

<?php
    header("Content-Type: text/html;charset=utf-8");   
    $handle = fopen(&#39;test.txt&#39;, &#39;r&#39;);             
   
$a = fgetc($handle)  ;
       echo $a; 
       
?>
登入後複製

輸出結果:

PHP中怎樣讀取檔案? (分享總結)

fgetc只能讀取一個字符,我們可以利用先前講到的循環來進行結合,就可以得到下面範例:

<?php
    header("Content-Type: text/html;charset=utf-8");    //设置字符编码
    $handle = fopen(&#39;test.txt&#39;, &#39;r&#39;);                 //打开文件
    if (!$handle) {                                     //判断文件是否打开成功
        echo &#39;文件打开失败!&#39;;
    }
    while (false !== ($char = fgetc($handle))) {        //循环读取文件内容
        echo $char;
    }
    fclose($handle);                                    //关闭文件
?>
登入後複製

#輸出結果:

PHP中怎樣讀取檔案? (分享總結)

fgets()fgetss():逐行讀取檔案

<?php
    header("Content-Type: text/html;charset=utf-8");   
    $handle = fopen(&#39;test.txt&#39;, &#39;r&#39;);             
   
$a = fgets($handle)  ;
       echo $a; 
       
?>
登入後複製

輸出結果:

PHP中怎樣讀取檔案? (分享總結)

fgetss()函數是fgets()的變式,也是用來讀取一行數據,讀取的同時它也會過濾掉讀取內容中的PHP和HTML標記,

可以看出,透過fgets可以逐行讀取文件,同時可以和上文一樣,我們可以利用迴圈來讀取全部文件。

範例如下:

<?php
    $handle = @fopen("test.txt", "r");
    if ($handle) {
        while (($info = fgets($handle, 1024)) !== false) {
            echo $info.&#39;<br>&#39;;
        }
        fclose($handle);
    }                                
?>
登入後複製

輸出結果:

PHP中怎樣讀取檔案? (分享總結)

fread():讀取檔案(任意長度)

PHP中怎樣讀取檔案? (分享總結)

<?php
    $filename = "test.txt";
    $handle = fopen($filename, "r");
    $contents = fread($handle, &#39;6&#39;);
    echo &#39;从文件中读取 6 个字符长度:&#39;.$contents.&#39;<br>&#39;;
    rewind($handle);
    $contents = fread($handle, filesize($filename));
    echo &#39;读取全部的文件内容:&#39;.$contents;
    fclose($handle);
?>
登入後複製

輸出結果:

PHP中怎樣讀取檔案? (分享總結)

readfile():讀取全部檔案

#
<?php
    $file = &#39;test.txt&#39;;
    $info = readfile($file);
?>
登入後複製

輸出結果:

PHP中怎樣讀取檔案? (分享總結)

file():將整個檔案讀入一個陣列中

<?php
    $file = &#39;test.txt&#39;;
    $arr  = file($file, FILE_IGNORE_NEW_LINES);
    $arr2 = file($file);
    echo &#39;<pre class="brush:php;toolbar:false">&#39;;
    var_dump($arr);
    var_dump($arr2);
?>
登入後複製

輸出結果:

PHP中怎樣讀取檔案? (分享總結)

file_get_contents():將檔案讀入一個字串

首先,我們先建立一個test.txt檔案

PHP中怎樣讀取檔案? (分享總結)

然後輸入:

<?php
    $a = &#39;test.txt&#39;;
   $b = file_get_contents($a);
   //因为每一行有一个回车即\n,我用\n来把这个字符串切割成数组
   $c = explode("\n", $b);
   //把切割成的数组,下标赋值给$key,值赋值给$val,每次循环将$key加1。
   while (list($key, $val) = each($c)) {
       ++$key;
       $val = trim($val);
       //用的单引号,单引号不解释变量进行了拼接而已
       print &#39;Line&#39; . $key .&#39;:&#39;.  $val.&#39;<br />&#39;;
   }
?>
登入後複製

透過與我們之前學到的知識結合起來,輸出結果:

PHP中怎樣讀取檔案? (分享總結)

這就是我們學習的知識進行了整合,先是透過file_get_contents先開啟文件,然後在透過list each語句和while循環,得到了輸出結果。

擴充知識:fopen、fread、fclose操作讀取

#上述的file_get_contents開啟檔案的方式簡單又粗暴,那麼接下來的幾個

resource fopen ( string $文件名, string 模式)
string fread ( resource $操作资源, int 读取长度)
bool fclose ( resource $操作资源 )
登入後複製

透過上面的函數我們來講解資源類型的通常操作方式:

  • 開啟資源

  • ##使用相關函數進行操作

  • 關閉資源

fopen函數 fopen函數的功能是開啟文件,參數主要有兩個:

  • 檔案開啟的路徑

  • 開啟檔案的模式

傳回類型是一個資源類型,資源類型需要其他的函數來操作這個資源。所有的資源有開啟就要有關閉。

fread函數: 函數的功能的功能是讀取開啟的檔案資源。讀取指定長度的檔案資源,讀取一部分向後移動一部分。至到文件結尾。

fclose函數 :fclose函數的功能是關閉資源。資源有開啟就有關閉。

接下來要為大家介紹fopen函數的模式:

  • r    只讀方式打開,並將檔案指標指向檔案頭。   

  • r    讀寫入方式打開,將檔案指標指向檔案頭。   

  • w    寫入方式打開,將檔案指標指向檔案頭並將檔案大小截為零。如果檔案不存在則嘗試建立    

  • w    讀寫方式打開,將檔案指標指向檔案頭並將檔案大小截為零。如果檔案不存在則嘗試建立    

  • a    寫入方式打開,並將檔案指標指向檔案結尾。如果檔案不存在則嘗試建立    

  • a    讀寫方式打開,並將檔案指標指向檔案結尾。如果檔案不存在則嘗試建立之    

  • x    建立並以寫入方式打開,將檔案指標指向檔案頭。如果檔案已存在,則 fopen() 呼叫失敗並傳回 FALSE,並產生一條 E_WARNING 層級的錯誤訊息。如果檔案不存在則嘗試建立    

  • x     建立並以讀取和寫入方式打開,並將檔案指標指向檔案頭。如果檔案已存在,則 fopen() 呼叫失敗並傳回 FALSE,並產生一條 E_WARNING 層級的錯誤訊息。如果檔案不存在則嘗試建立

推薦學習:《PHP影片教學

以上是PHP中怎樣讀取檔案? (分享總結)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板