gpt4 book ai didi

php - 替换在文本文件中找到特定单词的整行

转载 作者:IT王子 更新时间:2023-10-29 01:02:07 27 4
gpt4 key购买 nike

如何使用 php 替换文件中的特定文本行?

我不知道行号。我想替换包含特定单词的行。

最佳答案

一种方法,您可以对较小的文件使用两次:

$data = file('myfile'); // reads an array of lines
function replace_a_line($data) {
if (stristr($data, 'certain word')) {
return "replacement line!\n";
}
return $data;
}
$data = array_map('replace_a_line', $data);
file_put_contents('myfile', $data);

快速说明,PHP > 5.3.0 支持 lambda 函数,因此您可以删除命名函数声明并将映射缩短为:

$data = array_map(function($data) {
return stristr($data,'certain word') ? "replacement line\n" : $data;
}, $data);

从理论上讲,您可以将其设为单个(更难遵循)php 语句:

file_put_contents('myfile', implode('', 
array_map(function($data) {
return stristr($data,'certain word') ? "replacement line\n" : $data;
}, file('myfile'))
));

对于较大的文件,您应该使用另一种(较少内存密集型)方法:

$reading = fopen('myfile', 'r');
$writing = fopen('myfile.tmp', 'w');

$replaced = false;

while (!feof($reading)) {
$line = fgets($reading);
if (stristr($line,'certain word')) {
$line = "replacement line!\n";
$replaced = true;
}
fputs($writing, $line);
}
fclose($reading); fclose($writing);
// might as well not overwrite the file if we didn't replace anything
if ($replaced)
{
rename('myfile.tmp', 'myfile');
} else {
unlink('myfile.tmp');
}

关于php - 替换在文本文件中找到特定单词的整行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3004041/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com