经过几个小时的寻找解决方案,我找不到任何有效或适合我的问题。
基本上,我有动态网站,它会生成新页面,我想在其中添加将新页面添加到sitemap.xml的功能
当我使用:
file_put_contents("$sitemap_file", $string_to_add, FILE_APPEND);
它会在/ urlset标记之后的sitemap.xml末尾添加$string_to_add
。
有没有办法在/ urlset标记之前添加此字符串?
我的代码:
$date_mod = date('Y-m-d');
$string = "
<url>
<loc>https://www.mywebsite.com$internal_link</loc>
<lastmod>$date_mod</lastmod>
<changefreq>monthly</changefreq>
</url>";
file_put_contents("$root/sitemap.xml", $string, FILE_APPEND);
答案 0 :(得分:1)
您可以使用SimpleXML
尝试以下内容:
$date_mod = date('Y-m-d');
$string = "
<url>
<loc>https://www.mywebsite.com$internal_link</loc>
<lastmod>$date_mod</lastmod>
<changefreq>monthly</changefreq>
</url>";
$xml = simplexml_load_file("$root/sitemap.xml");
$xml->addChild($string);
file_put_contents("$root/sitemap.xml", $xml->asXML());
这会将<url>
置于<urlset>
标记内,希望如此。
答案 1 :(得分:0)
只需使用SimpleXML:
// You can also do
// $xmlStr= file_get_contents('sitemap.xml');
$xmlStr=<<<XML
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>http://domain.fake/link1.html</loc>
<priority>1.0</priority>
</url>
<url>
<loc>http://domain.fake/link2.html</loc>
<priority>0.99</priority>
</url>
</urlset>
XML;
// Create the SimpleXML object from the string
$xml = simplexml_load_string($xmlStr);
// add an <url> child to the <urlset> node
$url = $xml->addChild("url");
// add the <loc> and <priority> children to the <url> node
$url->addChild("loc", "http://domain.fake/link2.html");
$url->addChild("priority", 0.98);
// get the updated XML string
$newXMLStr = $xml->asXML();
//write it to the sitemap.xml file
file_put_contents('sitemap.xml',$newXMLStr);