php文本文件新闻更新

php文本文件新闻更新,php,Php,我正在尝试用php制作一个新闻提要类型的东西 我有一个文本文件-news.txt和一个php文件index.php 我已经完成了周围的代码和打开/关闭文本文件。现在我被困在如何将新的新闻条目$newsnew插入news.txt文件的顶部以及如何删除news.txt文件中旧的底部新闻文件中 有没有什么方法可以做到这一点而不删除整个文件并再次写入 编辑:每个新闻项目只是一个小字符串,比如500个字符,一行。使用数据库 如果您确实必须使用文本文件,请为每个新闻项目使用不同的文件,并按如下顺序命名:

我正在尝试用php制作一个新闻提要类型的东西

我有一个文本文件-news.txt和一个php文件index.php

我已经完成了周围的代码和打开/关闭文本文件。现在我被困在如何将新的新闻条目$newsnew插入news.txt文件的顶部以及如何删除news.txt文件中旧的底部新闻文件中

有没有什么方法可以做到这一点而不删除整个文件并再次写入

编辑:每个新闻项目只是一个小字符串,比如500个字符,一行。

使用数据库

如果您确实必须使用文本文件,请为每个新闻项目使用不同的文件,并按如下顺序命名:

  • 新闻001.txt
  • 新闻002.txt
  • 等等

然后,您可以添加和删除文件,读取目录并显示其中的内容。

如果这是一个XML文件,您可以读取它,解析它并删除DOM中的最后一个子文件。但是,如果您的所有数据都在一个数据库中,那么每次重写文件可能会容易得多

编辑:编辑后:是的,您可以这样做:

  • 将新行写入新文件
  • 逐行读取旧文件并将其写入新文件
  • 跳过最后一行(通过计数或EOF检测)
  • 删除旧文件并重命名新文件

  • 不,没有。但是,您可以考虑将消息以重发顺序存储。这样,您只需在新消息到达时附加到news.txt。

    您将无法在不再次写入整个内容的情况下预先添加到文件的开头。您可以将“a”模式标志附加到fopen()的末尾,但要删除最旧的项,您需要再次写出整个文件

    实际上,这里的解决方案是数据库而不是单个文本文件。

    使用file()函数将news.txt中的项目作为数组导入,使用array\u unshift()添加新的第一个项目,使用array\u pop()删除最后一个项目。将数组重新加入到单个字符串中,并将其写入news.txt:

    $items = file('news.txt');
    array_unshift($items, 'New item 1');
    array_pop($items);
    $newstext = implode(PHP_EOL, $items);
    // write $newstext to the external file
    

    使用平面文本文件有很多方法,但我不确定是否值得。您可以使用一些轻量级的结构化文件或嵌入式数据库。例如SQLite,它将存储在普通文件中,不需要额外的设置。

    我考虑过这一点,但如果我将新的一行附加到底部,它们是删除第一行的一种方法吗?@David19801否,但通常不需要删除任何内容。如果您不想显示所有新闻,只需在结尾前查看(例如)10kB。这条路很长,但我想已经足够近了!