在php中从日志文件中删除存储在数组中的内容

在php中从日志文件中删除存储在数组中的内容,php,mysql,file,centos,Php,Mysql,File,Centos,我从一个日志文件中提取了一些数据并将其放入一个数组中(我们称之为$line\u content)。我将前15行从数组复制到另一个数组中($line\u content15)。我想从日志文件中删除这15行。我该怎么做?我尝试使用str_replace,如下代码段所示: file_put_contents($filename, str_replace($line_content15 . "\r\n", "", file_get_contents($filename))); 任何意见都会有帮助。谢谢

我从一个日志文件中提取了一些数据并将其放入一个数组中(我们称之为
$line\u content
)。我将前15行从数组复制到另一个数组中(
$line\u content15
)。我想从日志文件中删除这15行。我该怎么做?我尝试使用str_replace,如下代码段所示:

file_put_contents($filename, str_replace($line_content15 . "\r\n", "",
file_get_contents($filename)));

任何意见都会有帮助。谢谢大家!

正如@user3783243所评论的,我需要对数组进行内爆并使用

阵列拼接($inboded\u content,$initial\u line\u number,$last\u line\u number)

在这种情况下,

$initial\u line\u number=0
$last\u line\u number=15

更新:


我还需要更改PHP访问和修改文件的权限。

鉴于日志文件通常会变得非常大,那么尝试在内存中执行此操作不是一个好的解决方案。此外,由于日志文件通常是审计跟踪的一部分,因此不应修改它们。但假设有合理的理由

 function delete_lines($fname, $startline, $endline)
 {
    $tmp=tmpfile();
    $in=fopen($fname, 'r+');
    if (!flock($in, LOCK_EX, $wouldblock) || $wouldblock) {
        trigger_error("Unable to lock file");
        return false;
    }
    for ($x=0; $x<$startline; $x++) {
       fputs($tmp, fgets($in));
    }
    for ($x=0; $x<($endline-$startline); $x++) {
       fgets($in);
    }
    while (!feof($in)) {
       fputs($tmp, fgets($in));
    }
    fseek($tmp,0);
    fseek($in, 0);
    $newsize=0;
    while (!feof($tmp)) {
       $newsize+=fputs($in, fgets($tmp));
    }
    ftruncate($in,$newsize);
    fclose($in);
    fclose($tmp);
    return true;
 }
函数删除行($fname、$startine、$endline)
{
$tmp=tmpfile();
$in=fopen($fname,'r+');
如果(!flock($in,LOCK_EX,$wouldblock)| |$wouldblock){
触发器_错误(“无法锁定文件”);
返回false;
}

因为($x=0;$xIf
$line\u content15
是一个不能连接到它的数组。你需要将它内爆为字符串。啊,我明白了,谢谢!@user3783243