如何用php替换文件的一行



我想用php替换文件的一行,我该怎么做?

这是我打印要替换的行的代码:

$file = fopen("file.dat", "a+");


$eqs = file_get_contents("file.dat");
$eqs = preg_split( "/n/", $eqs );
foreach ($eqs as $valor) {
if(strpos($valor, $sn) !== false){
echo $valor; //this is the line to replace

} else{
echo "Not found";
}
}

提前感谢

As欺骗♦提到,除非行是固定长度的,否则最简单的方法是处理整个文件并将其输出到一个新文件。

创建一个变量$newdata来附加处理后的数据。

如果您的strpos语句!==false,则可以使用$replace_text变量更改该文本,并将其追加。

循环完成后,将输出保存到一个新文件中。(如果PHP具有适当的权限(

$file = fopen("file.dat", "a+");


$eqs = file_get_contents("file.dat");
$eqs = preg_split( "/n/", $eqs );
$newdata = "";
foreach ($eqs as $valor) {
if(strpos($valor, $sn) !== false){
echo $valor; //this is the line to replace
$replace_text = "test";
$newdata = $newdata.$replace_text."/n/";
} else{
$newdata = $newdata.$valor."/n/";
}
}
$myfile = fopen("newfile.dat", "w") or die("Unable to open file!");
fwrite($myfile, $newdata);
fclose($myfile);

我建议使用此解决方案,因为它通过逐行处理来节省资源。

$source = fopen('file.dat', "r");
$target = fopen('file.dat.tmp', "w");
while ($line = fgets($source)) {
if(strpos($line, $sn) === false){
fputs($target, $line);
}
}
fclose($source);
fclose($target);
unlink('file.dat');
rename('file.dat.tmp','file.dat');

最新更新