One way is to read the file and put it in array
, by index you indicate the line and change the value.
$linhas = explode(PHP_EOL, file_get_contents("arquivo1.txt"));
$numeroLinha = 2;
$linhas[$numeroLinha] = "foo bar";
file_put_contents("foo.txt" , implode(PHP_EOL, $linhas));
If you prefer to read row by line:
function AdicionarLinha($arquivo, $numeroLinha, $conteudo){
$arquivoTemporario = "$arquivo.bak";
$linhaAtual = 0;
$fpRead = fopen($arquivo, 'r');
$fpWrite = fopen($arquivoTemporario, 'w');
try{
if ($fpRead) {
while (($linha = fgets($fpRead)) !== false) {
if ($linhaAtual == $numeroLinha){
$linha .= $conteudo . PHP_EOL; // Para substituir, use "="
}
fwrite($fpWrite, $linha);
$linhaAtual += 1;
}
}
}
catch (Exception $err) {
echo $err->getMessage() . PHP_EOL;
}
finally {
fclose($fpRead);
fclose($fpWrite);
unlink($arquivo); // Para deletar o arquivo original
rename($arquivoTemporario, $arquivo); // Para renomear o arquivo
}
}
To use, do so:
AdicionarLinha("arquivo1.txt", 2, "foo bar"); // Adiciona "foo bar" a partir da linha 2