Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
删除php中的行?这可能吗?_Php_File Io - Fatal编程技术网

删除php中的行?这可能吗?

删除php中的行?这可能吗?,php,file-io,Php,File Io,我一直在努力为我的网站创建一个简单(非常简单)的聊天系统,因为我在Javascripting/AJAX方面的知识有限。在从许多善良的人那里收集资源和帮助之后,我创建了一个简单的聊天系统,但只剩下一个问题 消息以以下格式发布到名为“msg.html”的文件中: $name$message 然后使用PHP和AJAX,我将使用 文件();函数和使用PHP的foreach(){}循环下面是代码: <?php $file = 'msg.html'; $data = file($file);

我一直在努力为我的网站创建一个简单(非常简单)的聊天系统,因为我在Javascripting/AJAX方面的知识有限。在从许多善良的人那里收集资源和帮助之后,我创建了一个简单的聊天系统,但只剩下一个问题

消息以以下格式发布到名为“msg.html”的文件中:
$name$message

然后使用PHP和AJAX,我将使用 文件();函数和使用PHP的foreach(){}循环下面是代码:

    <?php 
$file = 'msg.html';
$data = file($file);
$max_lines = 20;
if(count($data) > $max_lines){
    // here i want the data to be deleted from oldest until i only have 20 messages left.
}
foreach($data as $line_num => $line){
echo $line_num . " . " . $line; 
}
?>


我的问题是如何删除最旧的消息,以便只剩下最新的20条消息?

我想您可以读取该文件,将其分解为一个数组,切掉除最后20个字段以外的所有内容,然后将其写回文件,覆盖旧的一条。。。也许不是最好的解决方案,但如果你真的不能像德兰建议的那样使用数据库,我想你可以读取文件,将其分解成一个数组,除去最后20个字段以外的所有字段,然后将其写回文件,覆盖旧的一个。。。也许不是最好的解决方案,但如果您真的不能像Delan建议的那样使用数据库,您会想到这样的解决方案

$file = 'msg.html';
$data = file($file);
$max_lines = 20;
foreach($data as $line_num => $line)
{
    if ($line_num < $max_lines)
    {
        echo $line_num . " . " . $line; 
    }
    else
    {
        unset($data[$line_num]);
    }
}
file_put_contents('msg.html', $data);
?>
$file='msg.html';
$data=文件($file);
$max_线=20;
foreach($line\u num=>$line形式的数据)
{
如果($line_num<$max_line)
{
echo$line_num.“.”$line;
}
其他的
{
未设置($data[$line_num]);
}
}
文件内容('msg.html',$data);
?>

更多信息:)

您觉得这样的事情怎么样:

$file = 'msg.html';
$data = file($file);
$max_lines = 20;
foreach($data as $line_num => $line)
{
    if ($line_num < $max_lines)
    {
        echo $line_num . " . " . $line; 
    }
    else
    {
        unset($data[$line_num]);
    }
}
file_put_contents('msg.html', $data);
?>
$file='msg.html';
$data=文件($file);
$max_线=20;
foreach($line\u num=>$line形式的数据)
{
如果($line_num<$max_line)
{
echo$line_num.“.”$line;
}
其他的
{
未设置($data[$line_num]);
}
}
文件内容('msg.html',$data);
?>

更多信息:)

如果我没记错的话,这叫做循环赛

据我所知,您不能删除文件的任意部分。您需要用新内容覆盖文件(或创建新文件并删除旧文件)。您也可以将消息存储在单个文件中,但这当然意味着最多要读取
$max\u行
文件


还应使用以避免数据损坏。根据平台的不同,它不是100%可靠,但总比没有好。

如果我没记错的话,这就是循环赛

据我所知,您不能删除文件的任意部分。您需要用新内容覆盖文件(或创建新文件并删除旧文件)。您也可以将消息存储在单个文件中,但这当然意味着最多要读取
$max\u行
文件


还应使用以避免数据损坏。根据平台的不同,它不是100%可靠,但总比没有好。

你真的应该使用数据库,比如MySQL,因为简单的基于文件的方法对于这个任务来说是非常糟糕的方法。你有可用的数据库吗?用文本文件(以可靠的方式)做这类事情是非常复杂的。他实际上应该使用某种基于套接字的解决方案,而不是MySQL。你真的应该使用数据库,比如MySQL,因为简单的基于文件的方法对于这项任务来说是一种非常糟糕的方法。你有可用的数据库吗?用文本文件做这类事情(以可靠的方式)是非常复杂的。他实际上应该使用某种基于套接字的解决方案,而不是MySQL。谢谢你的答案它起作用了=)感觉很愚蠢没有想到那一点谢谢你的答案它起作用了=)感觉很愚蠢没有想到那一点