[英]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.