簡體   English   中英

PHP替換/更新大文本文件中的一行

[英]PHP replace/update a line in large text file

考慮一下,我們得到了以下格式的文本文件,大小約為1Gb

...
li1
li2
li3
...

我的任務是將li2行更新為line2

以下操作無效:

$fd = fopen("file", 'c+');

// ..
// code that loops till we reach li2 line..
// ..
$offset = ftell($fd);
// ..

fseek($fd, $offset );
fwrite($fd, "line2" . PHP_EOL);

由於產生:

...
li1
line2
3
...

我期望有這樣的結果:

...
li1
line2
li3
...

謝謝

在我看來,我們需要一個臨時文件,用於復制不變的結果,添加更改並繼續不變的結果。 最后,原始文件可以重命名,臨時文件可以重命名。

由於我熟悉文件系統,因此不能僅刪除/插入文件的一部分。 或者它太復雜了,不值得。

其次-您可以將文件復制到內存中並在其中進行修改,但是此處您依賴於資源,並且代碼可能無法在某些服務器上傳遞(例如,專用主機)。

祝好運!

如果您知道必須更改的文字,請使用以下命令:

$file_data=file_get_contents(some_name.txt);
$text = str_replace("line2", "li2", $file_data);
file_put_contents('some_name_changed.txt',  $text);

或者逐行閱讀並加載$ text,然后替換您想要的內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM