domdocument php 扩展_PHP DOMDocument对象生成sitemap.xml的方式(前后端分离)

最近接收到自动生成sitemap.xml的任务。首先在网络上搜集了一些资料查阅参考,发现都是东抄西凑的。现在整理一下实现方案和思路,欢迎更多的小伙伴提供更好的解决方案。

php生成xml文件主要是DOMDocument对象。具体可以看考一下官方文档:https://www.php.net/manual/zh/class.domdocument.php。

实现方案:生成sitemap.xml(命令行的方式)=>rync文件同步(linux定时执行脚本同步文件到目标文件目录下)

下面是部分实现逻辑代码,仅供参考:

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);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值