我正在尝试在php中制作新闻Feed类型的东西。
我有一个文本文件 - news.txt和一个php文件index.php。
我已完成周围的代码并打开/关闭文本文件。现在我被困在如何将新的新闻项目$ newsnew插入news.txt文件的顶部以及如何删除news.txt文件中的旧的底部新闻文件。
有没有办法在不删除整个文件并将其全部写完的情况下执行此操作?
编辑:每个新闻项只是一个小字符串,比如500个字符,一行。
答案 0 :(得分:1)
使用数据库。
如果您真的必须使用文本文件,请为每个新闻项使用不同的文件,并按顺序命名:
然后你可以添加和删除文件,阅读目录并显示那里的内容。
答案 1 :(得分:0)
如果这是一个XML文件,您可以读取它,解析它并删除DOM中的最后一个子项。但是如果你在数据库中拥有所有数据,那么每次都可以更容易地重写文件。
编辑:编辑后:是的,你可以这样做:
答案 2 :(得分:0)
不,没有。但您可以考虑以相反的顺序存储消息。这样你只需要在新消息到达时附加到news.txt。
答案 3 :(得分:0)
如果不再将整个内容写出来,您将无法在文件的开头添加前缀。您可以使用fopen()的“a”模式标志追加到它的末尾,但仍然要删除您需要再次写出整个文件的最旧项目。
实际上,数据库是解决方案,而不是单个文本文件。
答案 4 :(得分:0)
使用file()函数将news.txt中的项目作为数组导入,并使用array_unshift()添加新的第一项,使用array_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
答案 5 :(得分:0)
使用平面文本文件有很多方法可以做到,但我不确定它是否值得。您可以使用一些轻量级结构文件或嵌入式数据库。例如,将它存储在普通文件中的SQLite,无需额外的设置。