用PHP编辑文件

用PHP编辑文件,php,text,file-processing,Php,Text,File Processing,是否有一种方法可以使用PHP从文件中追加或删除一行文本 我正在为我的特定web托管堆栈编写一个托管控制面板,我希望能够以最低的要求对文件进行更改,以接触文件系统,因此我不希望为了添加或删除配置选项而重写整个文件。是,您可以在附加模式下打开文件: $fh = fopen('testFile.txt', 'a'); 如果现在写入文件,则会附加新内容 请参阅本文档并从中获取: ‘a’:只供写作使用;将文件指针放在文件末尾。如果文件不存在,请尝试创建它 但是,删除最后一行是不可能的。如果不先将文件解析

是否有一种方法可以使用PHP从文件中追加或删除一行文本


我正在为我的特定web托管堆栈编写一个托管控制面板,我希望能够以最低的要求对文件进行更改,以接触文件系统,因此我不希望为了添加或删除配置选项而重写整个文件。

是,您可以在附加模式下打开文件:

$fh = fopen('testFile.txt', 'a');
如果现在写入文件,则会附加新内容

请参阅本文档并从中获取:

‘a’:只供写作使用;将文件指针放在文件末尾。如果文件不存在,请尝试创建它


但是,删除最后一行是不可能的。

如果不先将文件解析为行,然后再将其写出,就无法从文件中删除行

您可以使用将$mode设置为“a”的

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

对于附加,您应该将fopen与$mode一起使用


,如何从文件中删除一行。

如果需要在文件中间更改某个内容,则必须读取、解析并保存它。否则,你只能在它的末尾附加一些东西

不过,您不应该担心此操作的成本,因为它是一个配置文件,不可能每秒更改100次,所以所需的时间可以忽略不计


如果您想在Access/Update/Delphi中有更多的灵活性,我认为您应该考虑将配置文件移到数据库表中。

在PHP中使用文件是有缺陷的,特别是WRT并发和锁定。您正在编写配置文件这一事实还意味着您正在公开任务,这些任务通常只对在web上具有root权限的用户可用。您在帖子中没有提到这些事情,但与解决这些问题相比,您的问题微不足道

关于您的问题-虽然实现您的建议(例如通过执行sed)相当简单-虽然您没有说明这是在什么操作系统上运行的,但我建议以其他形式创建原始文件的副本-很明显,候选对象将是数据库-您可以将序列号应用于行,并且很容易创建要填充的间隙或存储在会话中的PHP SplDoublyLinkedList。然后,一旦用户完成了所需的更改,就可以从工作表示在单个操作中重新生成文件

请注意,最终,无论您如何实现解决方案,该解决方案都将重写整个文件——这只是一个在您的代码中公开了多少过程的问题

记住,你所做的和大多数PHP Web脚本是一样的——除了在操作和重新排列HTML时,你用不同的文件类型来做这一点——所以你可能想看看其他PHP模板系统是如何编写的,并考虑是否可以为配置文件创建模板。 嗯


C.

他是如何处理删除选项的?你能澄清一下吗?你能保证配置选项总是在最后一行吗?谢谢你的回答,也谢谢所有花时间回答我的人。这正是我最终将采用的解决方案。这似乎是解决我这个问题的最好办法。该系统是为*NIX系统设计的,用于控制web服务邮件、DNS和www服务器,我打算在web界面中未公开的单独脚本中完成更改,以帮助确保安全。