繁体   English   中英

用PHP编辑文件

[英]Editing files in PHP

有没有一种方法可以使用PHP在文件中追加或删除一行文本。

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

如果没有先将文件解析成几行然后再次将其写出,就无法从文件中删除一行。

您可以通过将$mode设置为'a'的fopen附加到文件中

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

对于追加,应将fopen$mode a

请参阅有关如何从文件中删除行的信息。

是的,您可以以追加模式打开文件:

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

如果现在写入文件,则将附加新内容。

请参阅fopen和此文档:

'a' :仅开放写作; 将文件指针放在文件末尾。 如果该文件不存在,请尝试创建它。

但是,无法删除最后一行。

如果需要在文件中间进行更改,则必须阅读,解析并保存回去。 否则,您只能在其末尾附加一些内容。

不过,您不必担心此操作的成本,因为它是一个配置文件,不可能每秒更改一百次,因此花费的时间可以忽略不计。

如果您想在访问/更新/删除方面更具灵活性,我认为您应该考虑将配置文件移至数据库表。

用PHP处理文件充满了陷阱,尤其是并发和锁定。 您正在编写配置文件的事实也意味着您将公开通常只有具有Web根特权​​的用户才能使用的任务。 您没有在帖子中提到这些事情,但是与解决这些问题相比,您的问题微不足道。

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

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

请记住,您所做的与大多​​数php Web脚本相同-除了它们在处理和请求HTML时,您使用的是不同的文件类型-因此您可能想看看其他PHP模板系统如何编写,并考虑是否可以为配置文件创建模板。

HTH

C。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM