您好,登錄后才能下訂單哦!
這篇文章主要介紹“PHP中如何讀取文件”,在日常操作中,相信很多人在PHP中如何讀取文件問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”PHP中如何讀取文件”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
在我們使用電腦時,我們都會使用電腦來打開關閉一個文件,創建一個文件或者上傳一個文件。那么這些操作在代碼里能不能做呢?如果能做的話,應該怎樣去做?其實很簡單,學習文件處理實際上就是學習文件處理的函數,再結合之前所學習的內容。那么接下來我們一起來看看吧。
讀取文件算得上是我們再日常使用中最常見的一個操作了,那么再代碼里要怎樣實現。
下面來介紹一下如何使用 PHP 中的函數來讀取文件內容。
fgetc()
:從文件中讀取一個字符
在使用這些函數讀取文件之前,我們需要先在服務器根目錄下建立一個文本文件(這里我們以 text.txt 為例),文本內容如下:
接下來我們來看一看,fgetc()在使用中應該怎樣去用,輸出的結果又是如何:
<?php header("Content-Type: text/html;charset=utf-8"); $handle = fopen('test.txt', 'r'); $a = fgetc($handle) ; echo $a; ?>
輸出結果:
fgetc只能讀取一個字符,我們可以利用之前講到的循環來進行結合,就可以得到下面示例:
<?php header("Content-Type: text/html;charset=utf-8"); //設置字符編碼 $handle = fopen('test.txt', 'r'); //打開文件 if (!$handle) { //判斷文件是否打開成功 echo '文件打開失敗!'; } while (false !== ($char = fgetc($handle))) { //循環讀取文件內容 echo $char; } fclose($handle); //關閉文件 ?>
輸出結果:
fgets()
和 fgetss()
:逐行讀取文件
<?php header("Content-Type: text/html;charset=utf-8"); $handle = fopen('test.txt', 'r'); $a = fgets($handle) ; echo $a; ?>
輸出結果:
fgetss()函數是fgets()的一個變式,也是用來讀取一行數據,讀取的同時它還會過濾掉讀取內容中的PHP和HTML標記,
可以看出,通過fgets可以逐行讀取文件,同時可以和上文一樣,我們可以利用循環來讀取全部文件。
示例如下:
<?php $handle = @fopen("test.txt", "r"); if ($handle) { while (($info = fgets($handle, 1024)) !== false) { echo $info.'<br>'; } fclose($handle); } ?>
輸出結果:
fread()
:讀取文件(任意長度)
<?php $filename = "test.txt"; $handle = fopen($filename, "r"); $contents = fread($handle, '6'); echo '從文件中讀取 6 個字符長度:'.$contents.'<br>'; rewind($handle); $contents = fread($handle, filesize($filename)); echo '讀取全部的文件內容:'.$contents; fclose($handle); ?>
輸出結果:
readfile()
:讀取全部文件
<?php $file = 'test.txt'; $info = readfile($file); ?>
輸出結果:
file()
:把整個文件讀入一個數組中
<?php $file = 'test.txt'; $arr = file($file, FILE_IGNORE_NEW_LINES); $arr2 = file($file); echo '<pre>'; var_dump($arr); var_dump($arr2); ?>
輸出結果:
file_get_contents()
:將文件讀入一個字符串
首先,我們先創建一個test.txt文件
然后輸入:
<?php $a = 'test.txt'; $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 'Line' . $key .':'. $val.'<br />'; } ?>
通過與我們之前學的知識結合起來,輸出結果:
這就是我們學習的知識進行了整合,先是通過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中如何讀取文件”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。