您好,登錄后才能下訂單哦!
這篇文章主要講解了“php如何逐行讀取文件”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“php如何逐行讀取文件”吧!
有一個名為“test.txt”的文本文件,里面的內容為:
我們如何逐行讀取文件中的內容并輸出?簡單,今天我們就來給大家介紹兩種方法。
方法1:使用fgets()函數
我們來看看代碼示例:
<?php header("Content-Type: text/html;charset=utf-8"); //設置字符編碼 $handle = fopen('./test.txt', 'r'); //打開文件 if (!$handle) { //判斷文件是否打開成功 echo '文件打開失敗!'; } while (false !== ($char = fgets($handle,1024))) { //循環讀取文件內容 echo $char."<br>"; } fclose($handle); //關閉文件 ?>
輸出結果:
關鍵函數分析:
fgets()函數用于從打開的文件中讀取一行數據,接受一個必需參數$file
(被打開的文件)和一個可選參數$length
(要讀取的字節數);如果省略了 $length
參數,則默認讀取 1k(即1024字節)長度。
fgets()函數在遇到換行符
、EOF
(讀到文件末尾)或者到達指定長度 $length-1
后停止(返回字符串長度最大值為 $length-1
個字節)。
如果我們不知道文件中有多少數據,可以使用filesize()
函數來獲取,該函數可以返回指定文件的大小(字節數)。
所以上面的代碼示例可以修改一下:
<?php header("Content-Type: text/html;charset=utf-8"); //設置字符編碼 $url = './test.txt'; $handle = fopen($url, 'r'); //打開文件 $size= filesize($url); //計算文件大小 if (!$handle) { //判斷文件是否打開成功 echo '文件打開失敗!'; } while (false !== ($char = fgets($handle,$size))) { //循環讀取文件內容 echo $char."<br>"; } fclose($handle); //關閉文件 ?>
輸出結果和上面是一樣的。
方法2:使用fgetss()函數
我們來看看代碼示例:
<?php header("Content-Type: text/html;charset=utf-8"); //設置字符編碼 $handle = fopen('./test.txt', 'r'); //打開文件 if (!$handle) { //判斷文件是否打開成功 echo '文件打開失敗!'; } while (false !== ($char = fgetss($handle,1024))) { //循環讀取文件內容 echo $char."<br>"; } fclose($handle); //關閉文件 ?>
輸出結果:
關鍵函數分析:
fgetss()函數和fgets()函數相似,都可以從打開的文件中讀取一行數據,不同的是fgetss()函數會過濾掉數據中的 HTML 和 PHP 標簽。
fgetss() 函數接受一個必需參數$file
、兩個可選參數$length
和$tags
。參數$file和$length在fgets()函數中介紹過來,大家可以去上文了解。而參數$tags
是用來指定哪些標記不被去掉,我們通過一個例子來具體了解一下:
<?php header("Content-Type: text/html;charset=utf-8"); //設置字符編碼 $handle = fopen('./test.txt', 'r'); //打開文件 if (!$handle) { //判斷文件是否打開成功 echo '文件打開失敗!'; } while (false !== ($char = fgetss($handle,1024,"<h2>,<em>"))) { //循環讀取文件內容 echo $char."<br>"; } fclose($handle); //關閉文件 ?>
在上面的代碼中,我們設置參數$tags的值為“<h2>,<em>
”,也就是不過濾<h2>
和<em>
標簽,因此輸出結果:
注意:在操作完文件后,要記得使用fclose()函數來關閉文件!
感謝各位的閱讀,以上就是“php如何逐行讀取文件”的內容了,經過本文的學習后,相信大家對php如何逐行讀取文件這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。