
- PHP 教程
- PHP - 首頁
- PHP - 簡介
- PHP - 安裝
- PHP - 歷史
- PHP - 特性
- PHP - 語法
- PHP - Hello World
- PHP - 註釋
- PHP - 變數
- PHP - Echo/Print
- PHP - var_dump
- PHP - $ 和 $$ 變數
- PHP - 常量
- PHP - 魔術常量
- PHP - 資料型別
- PHP - 型別轉換
- PHP - 型別混雜
- PHP - 字串
- PHP - 布林值
- PHP - 整數
- PHP - 檔案與I/O
- PHP - 數學函式
- PHP - Heredoc 和 Nowdoc
- PHP - 複合型別
- PHP - 檔案包含
- PHP - 日期與時間
- PHP - 標量型別宣告
- PHP - 返回型別宣告
- PHP 運算子
- PHP - 運算子
- PHP - 算術運算子
- PHP - 比較運算子
- PHP - 邏輯運算子
- PHP - 賦值運算子
- PHP - 字串運算子
- PHP - 陣列運算子
- PHP - 條件運算子
- PHP - 展開運算子
- PHP - 空值合併運算子
- PHP - 宇宙飛船運算子
- PHP 控制語句
- PHP - 決策
- PHP - If…Else 語句
- PHP - Switch 語句
- PHP - 迴圈型別
- PHP - For 迴圈
- PHP - Foreach 迴圈
- PHP - While 迴圈
- PHP - Do…While 迴圈
- PHP - Break 語句
- PHP - Continue 語句
- PHP 函式
- PHP - 函式
- PHP - 函式引數
- PHP - 按值傳遞
- PHP - 按引用傳遞
- PHP - 預設引數
- PHP - 具名引數
- PHP - 可變引數
- PHP - 返回值
- PHP - 傳遞函式
- PHP - 遞迴函式
- PHP - 型別提示
- PHP - 變數作用域
- PHP - 嚴格型別
- PHP - 匿名函式
- PHP - 箭頭函式
- PHP - 可變函式
- PHP - 區域性變數
- PHP - 全域性變數
- PHP 超全域性變數
- PHP - 超全域性變數
- PHP - $GLOBALS
- PHP - $_SERVER
- PHP - $_REQUEST
- PHP - $_POST
- PHP - $_GET
- PHP - $_FILES
- PHP - $_ENV
- PHP - $_COOKIE
- PHP - $_SESSION
- PHP 檔案處理
- PHP - 檔案處理
- PHP - 開啟檔案
- PHP - 讀取檔案
- PHP - 寫入檔案
- PHP - 檔案是否存在
- PHP - 下載檔案
- PHP - 複製檔案
- PHP - 追加檔案
- PHP - 刪除檔案
- PHP - 處理CSV檔案
- PHP - 檔案許可權
- PHP - 建立目錄
- PHP - 列出檔案
- 面向物件PHP
- PHP - 面向物件程式設計
- PHP - 類和物件
- PHP - 建構函式和解構函式
- PHP - 訪問修飾符
- PHP - 繼承
- PHP - 類常量
- PHP - 抽象類
- PHP - 介面
- PHP - 特性
- PHP - 靜態方法
- PHP - 靜態屬性
- PHP - 名稱空間
- PHP - 物件迭代
- PHP - 封裝
- PHP - final 關鍵字
- PHP - 過載
- PHP - 克隆物件
- PHP - 匿名類
- PHP Web 開發
- PHP - Web 概念
- PHP - 表單處理
- PHP - 表單驗證
- PHP - 表單郵件/URL
- PHP - 完整表單
- PHP - 檔案包含
- PHP - GET & POST
- PHP - 檔案上傳
- PHP - Cookie
- PHP - Session
- PHP - Session 選項
- PHP - 傳送郵件
- PHP - 過濾輸入
- PHP - Post-Redirect-Get (PRG)
- PHP - 快閃記憶體訊息
- PHP 高階
- PHP - MySQL
- PHP.INI 檔案配置
- PHP - 陣列解構
- PHP - 編碼規範
- PHP - 正則表示式
- PHP - 錯誤處理
- PHP - Try…Catch
- PHP - 除錯Bug
- PHP - 針對C語言開發者
- PHP - 針對Perl開發者
- PHP - 框架
- PHP - Core PHP vs. 框架
- PHP - 設計模式
- PHP - 過濾器
- PHP - JSON
- PHP - 異常
- PHP - 特殊型別
- PHP - 雜湊
- PHP - 加密
- PHP - is_null() 函式
- PHP - 系統呼叫
- PHP - HTTP 認證
- PHP - 交換變數
- PHP - Closure::call()
- PHP - 過濾後的 unserialize()
- PHP - IntlChar
- PHP - CSPRNG
- PHP - 預期
- PHP - use 語句
- PHP - 整數除法
- PHP - 已棄用的特性
- PHP - 已移除的擴充套件和SAPI
- PHP - PEAR
- PHP - CSRF
- PHP - FastCGI 程序
- PHP - PDO 擴充套件
- PHP - 內建函式
- PHP 有用資源
- PHP - 速查表
- PHP - 問答
- PHP - 快速指南
- PHP - 線上編譯器
- PHP - 有用資源
- PHP - 討論
PHP - 讀取檔案
PHP 提供多種選項,用於讀取已使用 fopen() 函式開啟的檔案中的資料。PHP 庫中的以下內建函式可以幫助我們執行讀取操作:
fgets() - 從檔案指標中獲取一行。
fgetc() - 返回檔案指標中單個字元的字串。
fread() - 從檔案指標讀取指定數量的位元組。
fscanf() - 從檔案讀取資料並根據指定的格式進行解析。
fgets() 函式
fgets() 函式可以從開啟的檔案中返回一行。此函式在遇到換行符或達到指定長度或 EOF 時停止返回,如果失敗則返回 false。
fgets(resource $stream, ?int $length = null): string|false
這裡,$stream 引數是使用 fopen() 函式以讀取或讀寫模式開啟的檔案的檔案指標或控制代碼,$length 是一個可選引數,指定要讀取的位元組數。
讀取操作在讀取 "length-1" 個位元組或遇到換行符時結束,以先到者為準。
示例
以下程式碼從 "hello.txt" 檔案讀取第一行:
<?php $file = fopen("hello.txt", "r"); $str = fgets($file); echo $str; fclose($file); ?>
它將產生以下輸出:
Hello World
示例
您可以將 fgets() 函式放在迴圈中,以讀取檔案直到到達檔案末尾。
<?php $file = fopen("hello.txt", "r"); while(! feof($file)) { echo fgets($file). "<br>"; } fclose($file); ?>
它將產生以下輸出:
Hello World TutorialsPoint PHP Tutorials
這裡,我們使用了 feof() 函式,如果檔案指標位於 EOF 處,則返回 true;否則返回 false。
fgetc() 函式
fgetc() 函式返回從檔案控制代碼的當前位置讀取的單個字元。遇到 EOF 時返回 false。
fgetc(resource $stream): string|false
這裡,$stream 引數是使用 fopen() 函式以讀取或讀寫模式開啟的檔案的檔案指標或控制代碼。
示例
以下程式碼顯示從 "hello.txt" 檔案讀取的第一個字元:
<?php $file = fopen("hello.txt", "r"); $str = fgets($file); echo $str; fclose($file); ?>
它將產生以下輸出:
H
示例
您也可以將 fgetc() 函式放在迴圈中,以逐個字元讀取檔案,直到到達 EOF。
<?php $file = fopen("hello.txt", "r"); while(! feof($file)) { $char = fgetc($file); if ($char == "\n") echo "<br>"; echo $char; } fclose($file); ?>
它將產生以下輸出:
Hello World TutorialsPoint PHP Tutorials
fread() 函式
PHP 中的 fread() 函式是一個二進位制安全的函式,用於從檔案讀取資料。fgets() 函式僅從文字檔案讀取,而 fread() 函式可以以二進位制模式讀取檔案。
fread(resource $stream, int $length): string|false
這裡,$stream 引數是使用 fopen() 函式以二進位制讀取或讀寫模式 (rb 或 rb+) 開啟的檔案的檔案指標或控制代碼。$length 引數指定要讀取的位元組數。
如果沒有給出 $length 引數,PHP 會嘗試讀取整個檔案,直到到達 EOF,受指定的分塊大小限制。
示例
以下程式碼讀取一個文字檔案:
<?php $name = "hello.txt"; $file = fopen($name, "r"); $data = fread($file, filesize($name)); echo $data; fclose($file); ?>
它將產生以下輸出:
Hello World TutorialsPoint PHP Tutorials
示例
您還可以讀取非 ASCII 檔案,例如以 rb 模式開啟的影像檔案。
<?php $name = "welcome.png"; $file = fopen($name, "rb"); $data = fread($file, filesize($name)); var_dump($data); fclose($file); ?>
瀏覽器將 "var_dump" 資訊顯示為:

fscanf() 函式
PHP 中的 fscanf() 函式從檔案流讀取輸入並根據指定的格式進行解析,從而將其轉換為相應型別的變數。每次呼叫該函式都會從檔案中讀取一行。
fscanf(resource $stream, string $format, mixed &...$vars): array|int|false|null
這裡,$stream 引數是使用 fopen() 函式以讀取模式開啟的檔案的控制代碼。並且,$format 是一個包含一個或多個以下格式說明符的字串:
%% - 返回百分號
%b - 二進位制數
%c - 根據 ASCII 值的字元
%f - 浮點數
%F - 浮點數
%o - 八進位制數
%s - 字串
%d - 帶符號十進位制數
%e - 科學計數法
%u - 無符號十進位制數
%x - 小寫字母的十六進位制數
%X - 大寫字母的十六進位制數
$vars 是一個可選引數,它透過引用指定變數,這些變數將包含已解析的值。
假設 "employees.txt" 檔案位於包含以下 PHP 指令碼的同一目錄中。文字檔案中的每一行都包含每個員工的姓名、電子郵件、職位和薪水,並以製表符分隔。
示例
以下 PHP 指令碼使用 fscanf() 函式中的格式說明符讀取檔案:
<?php $fp = fopen("employees.txt", "r"); while ($employee_info = fscanf($fp, "%s\t%s\t%s\t%d\n")) { list ($name, $email, $post, $salary) = $employee_info; echo "<b>Name</b>: $name <b>Email</b>: $email <b>Salary</b>: Rs. $salary <br>"; } fclose($fp); ?>
它將產生以下輸出:
Name: Ravishankar Email: ravi@gmail.com Salary: Rs. 40000 Name: Kavita Email: kavita@hotmail.com Salary: Rs. 25000 Name: Nandkumar Email: nandu@example.com Salary: Rs. 30000