PHP DOMDocument對象生成sitemap.xml的方式(先後端分離)

最近接收到自動生成sitemap.xml的任務。首先在網絡上搜集了一些資料查閱參考,發現都是東抄西湊的。如今整理一下實現方案和思路,歡迎更多的小夥伴提供更好的解決方案。

php生成xml文件主要是DOMDocument對象。具體能夠看考一下官方文檔:https://www.php.net/manual/zh/class.domdocument.php。

實現方案:生成sitemap.xml(命令行的方式)=>rync文件同步(linux定時執行腳本同步文件到目標文件目錄下)

下面是部分實現邏輯代碼,僅供參考:php

public function sitemap(array $thread, $url, $suffix, $filename = 'sitemap.xml')  
{  
  // 建立一個DOMDocument對象  
  $dom = new \DOMDocument("1.0", "utf-8");  
  header("Content-Type: text/xml");  
  // 建立根節點  
  $root = $dom->createElement("urlset");  
  $root->setAttribute( "xmlns", "http://www.sitemaps.org/schemas/sitemap/0.9" );  
  $root->setAttribute( "xmlns:mobile", "http://www.baidu.com/schemas/sitemap-mobile/1/" );  
  $dom->appendChild($root);  
  foreach ($thread as $value) {  
  // 創建根下子節點track  
  $track = $dom->createElement("url");  
  $root->appendChild($track);  
  // 創建track節點下元素  
  $loc = $dom->createElement("loc");  
  $track->appendChild($loc);  
  
  $mobile = $dom->createElement("mobile:mobile");  
  $mobile->setAttribute("type","pc,mobile");  
  $track->appendChild($mobile);  
  
  $priority = $dom->createElement("priority");  
  $track->appendChild($priority);  
  $lastmod = $dom->createElement("lastmod");  
  $track->appendChild($lastmod);  
  $changefreq = $dom->createElement("changefreq");  
  $track->appendChild($changefreq);  
  
  // 賦值  
  $content = $url . $value['id'] . $suffix;  
  $text = $dom->createTextNode($content);  
  $loc->appendChild($text);  
  $date = date("Y-m-d H:i:s", strtotime($value['created_at']));  
  $text = $dom->createTextNode($date);  
  $lastmod->appendChild($text);  
  $text = $dom->createTextNode('daily');  
  $changefreq->appendChild($text);  
  $text = $dom->createTextNode(0.8);  
  $priority->appendChild($text);  
  }  
  //生成xml文件  
  $dom->save($filename);    
}
相關文章
相關標籤/搜索