我有一个动态网站,其中不断生成帖子,我对其进行了编码,因此每次添加新帖子时,它都会将站点地图网址条目附加到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页,它需要查询多个表来获取数据
答案 0 :(得分: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);
}
}
}
?>