在文件中查找和替换

25

我想在文本文件中将某些字符串替换为另一个字符串(例如,\nH 替换为 ,H)。是否有使用 PHP 进行此操作的方法?


1
preg_replace() 也是你的好朋友。 - Torben
4个回答

62
你可以使用file_get_contents()读取整个文件,使用str_replace()进行替换操作,然后使用file_put_contents()将其输出回去。
示例代码:
<?php

$path_to_file = 'path/to/the/file';
$file_contents = file_get_contents($path_to_file);
$file_contents = str_replace("\nH", ",H", $file_contents);
file_put_contents($path_to_file, $file_contents);

?>

14

4
现在的问题是:你的一行代码比我的三行版本更快/更高效吗?;-) - Josh
1
更少的变量 = 更低的开销? - Paul
2
@Paul 相比读取、替换和写入操作,这个优势微不足道。 - Gumbo
2
没错,@Gumbo,因此我更倾向于追求更好的可读性=>更好的维护。 - Gábor Imre
我正在寻找一行代码,可以在我的composer json中添加,以初始化我的Lumen .env文件中的db设置(用于docker或travis等)。这对于这种情况看起来非常不错。 - Yega
我宁愿不将文件的全部内容存储在变量中,因为那可能会占用大量内存。在这种情况下,一行代码可能是不错的选择,除非你能确保使用后变量将被垃圾回收。 - Lucas Bustamante

10

如果您正在使用Unix系统,也可以通过php的程序执行函数使用sed

因此,您不必将文件的所有内容都通过php进行管道处理,可以使用正则表达式。 这可能会更快。

如果您不想阅读手册,可以在维基百科上找到概述。


3
如果文件较大,这其实是我会选择的方式—比起读入整个文件到 PHP 变量,然后使用 PHP 的 str_replace() 函数,这种方式可能更加高效。 - Josh
3
如果允许PHP在服务器上执行shell命令,则会打开一个安全漏洞。我建议只有在具备服务器和PHP的安全知识时才使用它。否则,您会使服务器处于风险之中。 - chadpeppers

1

file_get_contents() 然后使用 str_replace() 进行替换,最后使用 file_put_contents() 将修改后的字符串写回文件中(基本上就是 Josh 说的)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接