首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 在文件指定行與位置插入數據的實作教學

     編輯:PHP 相關知識

前言

在 PHP 開發中,檔案操作是常見需求,但若要在檔案的特定行、特定字元位置插入資料,邏輯就會變得稍微複雜。本文將透過一個完整的函式範例,示範如何精準地在文字檔案指定位置插入字串,並將修改後的內容寫回檔案。

核心程式碼實作

以下範例展示如何在第 3 行、第 10 個字元前插入字串 abcdef,並覆寫原檔案:

$arrInsert = insertContent("array.php", "abcdef", 3, 10);
unlink("array.php"); // 刪除原檔
foreach($arrInsert as $value) {
    file_put_contents("array.php", $value, FILE_APPEND); // 逐行寫入
}

function insertContent($source, $s, $iLine, $index) {
    $file_handle = fopen($source, "r");
    $i = 0;
    $arr = array();
    while (!feof($file_handle)) {
        $line = fgets($file_handle);
        ++$i;
        if ($i == $iLine) {
            // 處理插入邏輯:若索引在行尾則換行,否則在指定位置切割插入
            if($index == strlen($line)-1)
                $arr[] = substr($line, 0, strlen($line)-1) . $s . "\n";
            else
                $arr[] = substr($line, 0, $index) . $s . substr($line, $index);
        } else {
            $arr[] = $line;
        }
    }
    fclose($file_handle);
    return $arr;
}

參數說明

  • $source:目標檔案路徑
  • $s:要插入的字串內容
  • $iLine:目標行號(從 1 開始)
  • $index:該行中插入位置的字元索引(從 0 開始)

運作原理解析

函式 insertContent 採用「讀取全文 → 記憶體中修改陣列 → 刪除原檔 → 重寫」的策略。透過 fgets 逐行讀取,利用計數器 $i 判斷是否為目標行,再用 substr 切割字串完成插入。這種方式雖然簡單,但適用於中小型文字檔案;若處理大型檔案,建議改用暫存檔或串流處理以節省記憶體。

應用場景

此技巧常用於:設定檔自動化修改、日誌檔標記插入、樣板檔案動態產生等情境。若需像資料庫般靈活操作文字檔(刪除特定行、讀取指定行),可進一步封裝成類別管理。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved