在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