2010-02-14 66 views
2

有沒有辦法使用PHP在文件中附加或刪除一行文本。用PHP編輯文件

我正在爲我的特定虛擬主機堆棧編寫主機控制面板,並希望能夠以最低的要求更改文件,以觸摸文件系統,並且因此希望不會有重寫整個文件以添加或刪除配置選項。

+0

你能澄清 - 你能保證配置選項總是會在最後一行? – Mawg 2010-02-14 10:44:24

回答

0

在PHP中處理文件充滿了陷阱,尤其是併發和鎖定。您正在編寫配置文件的事實也意味着您正在公開的任務通常只對具有Web權限的用戶可用。您在文章中沒有提及這些內容,但與解決這些問題相比,您的問題並不重要。

關於你的問題 - 雖然它實現你提出的建議相當微不足道(例如通過執行sed--儘管你沒有說過這是運行的操作系統),我建議創建一個原始文件的副本一些其他的表示 - 顯而易見的候選人將是一個數據庫 - 您可以在這些行中應用序列號,並輕鬆創建填充間隙或存儲在會話中的PHP SplDoublyLinkedList。然後,一旦用戶進行了所需的更改,就可以通過工作表示的單個操作重新生成文件。

請注意,最終無論您如何實施解決方案,解決方案都會重寫整個文件 - 只是您的代碼中暴露了多少此過程的問題。請記住,你正在做的事情與大多數PHP網頁腳本一樣 - 除了當他們操作和重新編寫HTML時,你正在使用不同的文件類型 - 所以你可能想看看怎麼做其他PHP模板系統編寫,並考慮是否可以爲您的配置文件的模板。

HTH

C.

+0

感謝您的回答(和其他人誰花時間來回答我。) 這是正確的解決方案,我將最終去。因爲它似乎是我的特殊問題的最佳解決方案。 該系統是爲* NIX系統來控制網絡服務(郵件,DNS和萬維網服務器)而設計的,我打算在Web界面中未公開的單獨腳本中完成更改,以幫助確保安全。 – Philderbeast 2010-02-15 08:42:10

1

是的,你可以在追加方式打開文件:

$fh = fopen('testFile.txt', 'a'); 

如果你現在寫文件,新內容將追加。

fopen,並從該文檔:

'A':寫入方式打開;將文件指針放在文件的末尾。如果文件不存在,請嘗試創建它。

雖然刪除最後一行是不可能的。

+0

他怎麼處理移除的選項? – Mawg 2010-02-14 10:42:54

2

如果不先將文件解析成行,然後再將其寫出,則無法從文件中刪除行。

您可以附加到文件使用fopen$mode設置爲 'A'

$fp = fopen('myfile', 'a'); 
2

進行追加,你應該使用fopena$mode

See this please,關於如何從文件中刪除一行。

0

如果您需要在文件中間改變某些內容,您必須閱讀它,解析並保存。 Othwerwise你只能追加一些東西到最後。

雖然你不應該關心這個操作的成本,但它是一個配置文件,每秒不會被改變一百次,所以它應該花費微不足道的時間。

如果你想在訪問/更新/刪除更靈活我認爲你應該考慮將你的配置文件移動到數據庫表。