como adicionar string a uma linha específica de arquivo [closed]

-1

meu código é

<?php 

$data = file_get_contents('file.conf');
$rows = explode("\n", $data);
$rcount = count($rows); 
echo $rcount;
for ($l=0; $l<$rcount; $l++)
{
    $rowss = $rows[$l];
    if ($rowss == "[default]")
    {
        file_put_contents($rowss, "\nhi", FILE_APPEND | LOCK_EX) or die("<br>oops");
    }
}


?>

a saída é

52
oops

e meu arquivo (file.conf) contém 52 linhas que são impressas com sucesso, mas não posso escrever nesse arquivo

Eu preciso adicionar algumas strings como "hi" ao final da linha "[default]"

exemplo, meu arquivo é

eastern=America/New_York|'vm-received' Q 'digits/at' IMp
central=America/Chicago|'vm-received' Q 'digits/at' IMp
central24=America/Chicago|'vm-received' q 'digits/at' H N 'hours'
military=Zulu|'vm-received' q 'digits/at' H N 'hours' 'phonetic/z_p'
european=Europe/Copenhagen|'vm-received' a d b 'digits/at' HM



[default]

1234 => 4242,Example Mailbox,root@localhost
;4200 => 9855,Mark Spencer,markster@linux-    support.net,[email protected],attach=no|[email protected]|tz=central|maxmsg=    10
;4300 => 3456,Ben Rigas,[email protected]
;4310 => -5432,Sales,[email protected]

pls me ajude

obrigado u

    
por Loki San Hitleson 09.05.2014 / 14:11

1 resposta

0

Vamos supor que você queira adicionar 2 linhas após a linha 20.

Você pode usar array_splice :

$newlines = [ 'first line', 'second line' ];
array_splice($rows, 20, 0, $newlines);

A matriz $newlines pode conter quantas linhas você deseja adicionar. Você também pode adicionar apenas uma linha, mas ela precisa estar em uma matriz para que array_splice possa usá-la.

Então, no seu exemplo, você pode usar:

if ($rowss == "[default]")
{
    $newlines = [ 'first line', 'second line' ];
    array_splice($rows, $l + 1, 0, $newlines);
}

Isso obterá a linha com [default] e adicionará as linhas depois dela ( $l + 1 é a linha atual, contendo [default] ).

    
por Louis Matthijssen 09.05.2014 / 14:30