我想通過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文件中的區域
- 3. 用文件替換c:\:\\\ c |使用PHP
- 4. 使用php替換文件的內容
- 5. 替換使用PHP
- 6. 替換使用PHP
- 7. 使用php將pdf文件轉換爲txt文件
- 8. 如何從一個.txt文件使用的preg_match在PHP
- 9. 使用php導入一個txt文件到postgres時的問題
- 10. 使用座標PHP從txt文件
- 11. 使用php替換pdfs
- 12. 使用preg_replace替換php
- 13. 刪除一行並用txt文件中的新文本替換
- 14. 如何運行使用按鈕一個單獨的PHP文件
- 15. 用PHP寫入TXT文件,想要添加一個實際的換行符
- 16. 用php讀取txt文件
- 17. 使用php替換部分的xml使用php
- 18. 使用PHP上傳一個文件夾通過FTP使用PHP
- 19. 可能使用PEAR SearchReplace替換.php文件中的文本?
- 20. 使用PHP替換XML文件中的文本?
- 21. 使用QFtp下載單個.txt文件
- 22. 使用Python查找和替換子文件夾/ TXT使用CSV文件3
- 23. 替換txt文件中的整行
- 24. 如何開始使用PHP從指定行讀取txt文件?
- 25. 使用php過濾一個csv文件的文字或文本使用php
- 26. 使用PHP替換HTML頁面正文中的所有鏈接使用PHP
- 27. 如何用另一個特殊字符替換'使用str_replace php
- 28. 使用jQuery加載一個php文件和php文件包括
- 29. 如何使用PHP在另一臺PC上寫入文件txt?
- 30. 用PHP替換文本
這就是我們使用數據庫的原因。 – ceejayoz