0

我有一个动态站点,其中不断生成帖子,我对其进行了编码,因此每次添加新帖子时,它都会将站点地图 url 条目附加到 sitemap.xml 文件的底部。

        $lastID = $db->lastInsertId();
    $file = 'sitemap.xml';
    $current = file_get_contents($file);
    $current .= "<url>
    <loc>http://website.net/viewpost.php?ID=".$lastID."</loc>
    <changefreq>monthly</changefreq>
    </url>";
    file_put_contents($file, $current);

这可行,但 xml 文件 urlset 中的结束标记需要位于文件末尾。因此,当我附加此数据时,它会在 urlset 之后进行,即使我将其添加到字符串中,也会有多个结束标记。我如何更新文件,使其不在结束标记之后。每次都重新生成整个站点地图是可行的,但看起来工作量很大,因为目前有近 100 个页面,并且需要查询多个表来获取数据

4

1 回答 1

1

这是一个用于在另一个元素之前、之后或内部插入元素的简单函数。

<?php 

public function myInsertNode($newNode, $refNode, $insertMode=null) {

    if(!$insertMode || $insertMode == "inside") {

        $refNode->appendChild($newNode);

    } else if($insertMode == "before") {

        $refNode->parentNode->insertBefore($newNode, $refNode);

    } else if($insertMode == "after") {

        if($refNode->nextSibling) {
            $refNode->parentNode->insertBefore($newNode, $refNode->nextSibling);
        } else {
            $refNode->parentNode->appendChild($newNode);
        }      

    }

}

?>
于 2013-03-02T22:02:35.467 回答