本文介绍一种安全、高效的方法,使用 php 读取整个文件、逐行匹配并替换目标行,最后一次性写回磁盘,避免追加写入或破坏原有结构。适用于配置文件、键值对文本等场景。
在 PHP 中直接“原地覆盖”文件某一行是不可行的——因为文件系统不支持随机长度的行级覆写(字节偏移固定,而替换后行长度可能变化)。你遇到的问题(内容被追加到末尾)正是由于使用了 'a+' 模式:该模式将文件指针始终置于末尾,fwrite() 必然追加。即使切换为 'r+',手

✅ 正确做法是:读取 → 修改 → 全量写入。这是一种原子性更强、逻辑更清晰、容错性更高的方案。
以下是推荐实现(兼容 PHP 8.0+,含健壮性增强):
? 关键注意事项:
该方法简洁、可读性强,兼顾正确性与健壮性,是处理文本行级替换的标准实践。