我想通過AJAX使用php調用來替換一個.txt文件的單行,其中存儲了用戶特定的信息。問題是,如果我一旦使用fwrite進入正確的行,它就會留下任何先前的信息,這些信息比最後未更改的信息長。有沒有簡單的方法來清除.txt文件中的一行,我可以先打電話給php? 發生了什麼事情的例子 - 比方說,我正在存儲最喜歡的作曲家,並且一個用戶在他們的.txt文件中有「Beethoven」,並且當我用「Mozart」將fwrite改寫爲「Mozart」時, 「,我正在把」莫扎特文「作爲新的路線。我在fopen調用中使用「r +」,因爲我只想一次替換一行。使用php替換一個.txt文件的單行使用php
1
A
回答
0
這是我前段時間從文件中刪除行的代碼,它必須修改。另外,如果新線比舊線短,它將正常工作,對於更長的線,將需要進行重大修改。
關鍵是第二個while循環,其中更改後文件的所有內容都被重寫到文件中的正確位置。
<?php
$size = filesize('test.txt');
$file = fopen('test.txt', 'r+');
$lineToDelete = 3;
$counter = 1;
while ($counter < $lineToDelete) {
fgets($file); // skip
$counter++;
}
$position = ftell($file);
$lineToRemove = fgets($file);
$bufferSize = strlen($lineToRemove);
while ($newLine = fread($file, $bufferSize)) {
fseek($file, $position, SEEK_SET);
fwrite($file, $newLine);
$position = ftell($file);
fseek($file, $bufferSize, SEEK_CUR);
}
ftruncate($file, $size - $bufferSize);
echo 'Done';
fclose($file);
?>
1
如果此配置數據不需要提供給非PHP應用程序,可以考慮使用var_export()
代替。它基本上是var_dump/print_r,但輸出變量作爲可解析的PHP代碼。這將您的代碼降低到:
include('config.php');
$CONFIG['musician'] = 'Mozart';
file_put_contents('config.php', '<?php $CONFIG = ' . var_export($CONFIG, true));
相關問題
- 1. 使用php刪除txt文件一行一行使用php
- 2. 使用php插入並讀取一個txt文件使用php
- 3. 使用PHP替換txt文件中的區域
- 4. 用文件替換c:\:\\\ c |使用PHP
- 5. 使用php替換文件的內容
- 6. 替換使用PHP
- 7. 替換使用PHP
- 8. 如何用php替換文件的行
- 9. 使用php替換文本文件中的特定行?
- 10. 使用php從文件.txt中排序信息使用php
- 11. 使用php將pdf文件轉換爲txt文件
- 12. 使用php執行一個* .sql文件
- 13. 如何從一個.txt文件使用的preg_match在PHP
- 14. 使用php導入一個txt文件到postgres時的問題
- 15. 使用PHP函數創建一個新的txt文件
- 16. 如何使用php在CSV文件中的一行內替換1個值?
- 17. 使用php和.txt文件提交表單到文件
- 18. 導入txt文件到使用PHP
- 19. 使用php刪除文件(.txt)
- 20. 使用座標PHP從txt文件
- 21. 替換txt文件中的某些內容並使用PHP保存它?
- 22. 用另一個文件替換整行PHP
- 23. C# - 使用兩個.txt文件比較/替換文本
- 24. 我想在php中使用stripslash當寫入一個txt文件
- 25. 在linux中使用php創建一個txt文件
- 26. 使用php替換pdfs
- 27. 使用preg_replace替換php
- 28. PHP - 使用openssl_random_pseudo_bytes()替換mcrypt_create_iv()
- 29. 刪除一行並用txt文件中的新文本替換
- 30. 如何運行使用按鈕一個單獨的PHP文件
這就是我們使用數據庫的原因。 – ceejayoz