PHP |替换大型txt文件中的行

PHP |替换大型txt文件中的行,php,replace,text-files,line-numbers,Php,Replace,Text Files,Line Numbers,我有一个很大的txt文件,例如: text.txt包含: line1 line2 line3 line4 line5 line6 line7 line8 line9 但我无法找到任何解决方案,如何制作一个PHP文件,用另一个文本替换内容line4 谢谢您的帮助!:)您应该使用PHP的file()函数来实现这一点。它将返回一个包含每行的数组 $file = file('path/to/text.txt'); $lines = array_map(function ($value) { retur

我有一个很大的txt文件,例如:
text.txt
包含:

line1
line2
line3
line4
line5
line6
line7
line8
line9
但我无法找到任何解决方案,如何制作一个PHP文件,用另一个文本替换内容
line4

谢谢您的帮助!:)

您应该使用PHP的file()函数来实现这一点。它将返回一个包含每行的数组

$file = file('path/to/text.txt');
$lines = array_map(function ($value) { return rtrim($value, PHP_EOL); }, $file);
$lines[3] = 'New content for line 4';
$lines = array_values($lines);
要再次保存,请使用换行符对数组进行内爆:

$content = implode(PHP_EOL, $lines);
file_put_contents('path/to/your/file.txt', $content);
您应该使用PHP的file()函数来实现这一点。它将返回一个包含每行的数组

$file = file('path/to/text.txt');
$lines = array_map(function ($value) { return rtrim($value, PHP_EOL); }, $file);
$lines[3] = 'New content for line 4';
$lines = array_values($lines);
要再次保存,请使用换行符对数组进行内爆:

$content = implode(PHP_EOL, $lines);
file_put_contents('path/to/your/file.txt', $content);

您可以读取数组中的文件,通过删除第3个索引删除第4行,然后将所有内容放回一个文件中:

$lines = file('text.txt'); //read the file in an array
array_splice($lines , 3); //remove 4th line
//or
array_splice($lines , 3, 'different text'); //replace line with different text
file_put_contents('text.txt', implode("\n", $lines)); //put the array back into the file

您可以读取数组中的文件,通过删除第3个索引删除第4行,然后将所有内容放回一个文件中:

$lines = file('text.txt'); //read the file in an array
array_splice($lines , 3); //remove 4th line
//or
array_splice($lines , 3, 'different text'); //replace line with different text
file_put_contents('text.txt', implode("\n", $lines)); //put the array back into the file

我认为解决办法如下: 1.使用file\u Get\u contents()函数获取文本文件的内容 2.然后替换文本 3.然后使用file\u put\u contents()再次写回该文本文件中的现有数据。

代码片段

$remove_text = "text to remove";
$file_content = file_get_contents("your text file");
if(($key = array_search($remove_text, $file_content)) !== false) {
    unset($file_content[$key]);
}
file_put_contents("your text file",$file_content);

希望有帮助:)

我认为解决方案应该如下所示- 1.使用file\u Get\u contents()函数获取文本文件的内容 2.然后替换文本 3.然后使用file\u put\u contents()再次写回该文本文件中的现有数据。

代码片段

$remove_text = "text to remove";
$file_content = file_get_contents("your text file");
if(($key = array_search($remove_text, $file_content)) !== false) {
    unset($file_content[$key]);
}
file_put_contents("your text file",$file_content);


希望有帮助:)

代码在哪里?您尝试了什么?是否可以访问
exec
命令?如果是-我知道大型文件的解决方案如果文件真的很大-
exec(“/bin/sed-i'4s/*/New\u Content\u Here/'path\u to\u file”)代码在哪里?您尝试了什么?是否可以访问
exec
命令?如果是-我知道大型文件的解决方案如果文件真的很大-
exec(“/bin/sed-i'4s/*/New\u Content\u Here/'path\u to\u file”)
您需要通过换行符再次内爆$行,因为传递数组相当于
文件内容($filename,内爆('',$lines))
其中不会添加换行符。是的,并且由于$lines是一个一维数组,它将通过''内爆,这将删除所有换行符并将其保存在一行中。是的,你是对的。我已经更正了我的答案。谢谢您的更正。您需要通过换行符再次内爆$行,因为传递数组相当于
文件内容($filename,内爆(“”,$lines))
其中不会添加换行符。是的,并且由于$lines是一个一维数组,它将通过“”内爆,这将删除所有换行符并将其保存在一行中。是的,你是对的。我已经更正了我的答案。谢谢你的更正。谢谢。我会试试的!Mannhardt在我运行脚本后,为第4行添加了第1行第2行第3行新内容第4行第5行第6行第7行第8行第9行是的,这不是你想要的吗?很抱歉,我按enter键输入了所有评论:)谢谢,我会尝试的!mannhardt在我运行脚本后,第4行第1行第2行第3行新内容第4行第5行第6行第7行第8行第9行是的,这不是你想要的吗?很抱歉,我输入了所有注释:)文件内容必须在放入文件之前内爆。我的错p文件内容必须在放入文件之前内爆。我的错P