如何将字符串添加到文件的特定行

如何将字符串添加到文件的特定行

我的代码是,

<?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");
    }
}


?>

输出是,

52
oops

我的文件(file.conf)包含 52 行,已成功打印,但无法在该文件上写入

我需要在“[default]”行末尾添加一些字符串,如“hi”

例如,我的文件是

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]

请帮助我

感谢你

答案1

假设您想在第 20 行后添加 2 行。

您可以使用array_splice

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

数组$newlines可以包含您想要添加的任意多行。您也可以只添加一行,但它必须位于数组中,这样array_splice才能使用它。

因此在您的示例中,您可以使用:

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

这将获取带有 的行[default],并在其后添加行($l + 1是当前行,包含[default])。

相关内容