用 PHP 覆盖文件中的行

2022-08-30 21:45:59

覆盖文件中特定行的最佳方法是什么?我基本上想在一个文件中搜索字符串“@parsethis”,并用其他东西覆盖该行的其余部分。


答案 1

如果文件真的很大(日志文件或类似的东西),并且你愿意牺牲速度来消耗内存,你可以打开两个文件,基本上通过使用文件而不是系统内存来执行Jeremy Ruten提出的技巧。

$source='in.txt';
$target='out.txt';

// copy operation
$sh=fopen($source, 'r');
$th=fopen($target, 'w');
while (!feof($sh)) {
    $line=fgets($sh);
    if (strpos($line, '@parsethis')!==false) {
        $line='new line to be inserted' . PHP_EOL;
    }
    fwrite($th, $line);
}

fclose($sh);
fclose($th);

// delete old source file
unlink($source);
// rename target file to source file
rename($target, $source);

答案 2

如果文件不是太大,最好的方法可能是将文件读入带有file()的行数组中,在字符串的行数组中搜索并编辑该行,然后将数组内爆()回并fwrite()将其放回文件。


推荐