有没有办法使用PHP附加或删除文件中的一行文本。
我正在为我的特定网络托管堆栈编写托管控制面板,并且希望能够以最低限度的要求对文件系统进行更改,因此不希望这样做重写整个文件以添加或删除配置选项。
答案 0 :(得分:2)
如果没有首先将文件解析为行然后再将其写出来,则无法从文件中删除行。
您可以使用$mode
将$fp = fopen('myfile', 'a');
设置为'a'
{{1}}
答案 1 :(得分:2)
要进行追加,您应将fopen
与$mode
a
一起使用。
See this please,关于如何从文件中删除一行。
答案 2 :(得分:1)
是的,您可以在附加模式下打开文件:
$fh = fopen('testFile.txt', 'a');
如果您现在写入该文件,则会附加新内容。
请参阅fopen
以及此文档:
'a':仅限写作;将文件指针放在文件的末尾。如果该文件不存在,请尝试创建它。
虽然无法删除最后一行。
答案 3 :(得分:0)
如果您需要更改文件中间的内容,则必须阅读它,解析并保存。但是,你只能追加一些东西。
你不应该担心这个操作的成本,因为它是一个每秒不会改变一百次的配置文件,它应该花费的时间可以忽略不计。
如果您想要更灵活地访问/更新/删除,我认为您应该考虑将配置文件移动到数据库表。
答案 4 :(得分:0)
使用PHP中的文件充满了陷阱,尤其是并发和锁定。您正在编写配置文件的事实还意味着您正在公开通常仅对具有Web权限的用户可用的任务。您没有在帖子中提及这些内容,但与解决这些问题相比,您的问题微不足道。
关于你的问题 - 尽管实现你的建议是相当微不足道的(例如,通过执行sed - 尽管你没有说过它运行的操作系统)我建议在某些操作系统中创建原始文件的副本其他表示 - 明显的候选者将是一个数据库 - 您可以在其中应用序列号并轻松创建填充空白,或者存储在会话中的PHP SplDoublyLinkedList。然后,一旦用户根据需要进行了多次更改,就可以通过工作表示在单个操作中重新生成文件。
请注意,最终,无论您如何实施解决方案,解决方案都会重写整个文件 - 这只是在您的代码中公开了多少此过程的问题。
请记住,你所做的与大多数php网页脚本一样 - 除非他们操纵和重新编写HTML,你用不同的文件类型做 - 所以你可能想看看其他如何编写PHP模板系统,并考虑是否可以为配置文件创建模板。
HTH
下进行。