gpt4 book ai didi

php - 将文件指针向上移动一行(php)?

转载 作者:可可西里 更新时间:2023-11-01 00:04:27 26 4
gpt4 key购买 nike

我正尝试在我的网站上自动执行 sitemap.xml 文件,因为内容不断变化。我目前打开要附加的文件:fopen($file_name, 'a');这样我就可以添加新的标签集。但是,我只是注意到整个站点地图文件必须以标记结尾,这意味着每次打开文件时,我都需要将文本附加到文件末尾,而不是文件末尾。

所以基本上,我怎样才能在打开文件进行追加后将文件指针向上移动,这样我才能实现这一点?谢谢。

更新:这是站点地图的样子:

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.google.com/schemas/sitemap/0.84">
<url>
<loc>...</loc>
<lastmod>2009-08-23</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
</urlset>

所以每当我追加时,我都需要添加 <url>..</url>必须在收盘前进行的部分</urlset>标签。我已经有了可以将 xml 附加到文件末尾的代码。我只需要弄清楚如何在结束标记之前附加新部分。

最佳答案

使用 php fseek () 寻找文件末尾(使用 filesize () 查找),然后向后迭代一行。读取最后一行并暂时存储。用您要插入的内容覆盖最后一行,然后附加您之前存储的临时行。

要向后迭代一行,请结合使用 fseek 和 fgetc ()

$offset = filesize($fhandle) - 1;
fseek($fhandle, $offset--); //seek to the end of the line
while(fgetc($fhandle) != '\n') {
fseek($fhandle, $offset--);
}

现在你的内部文件指针应该指向最后一行之前的一行。当然,当你的文件只有一行时,你将不得不处理极端情况,但我会让你弄清楚细节;)

现在将最后一行存储在 tmp 变量中

$lastline = fgets($fhandle);
fseek($fhandle, $offset); //go back to where the last line began

插入你的行,并在文件末尾追加最后一行

fwrite($fhandle, $myLine);
fwrite($fhandle, $lastline);

关于php - 将文件指针向上移动一行(php)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1318302/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com