<?php
// 设置字符编码为 GBK
header("Content-Type: text/xml; charset=GBK");

// 获取当前访问的 URL
$current_url = 'https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];

// 获取网站域名部分
$parsed_url = parse_url($current_url);
$homepage = $parsed_url['scheme'] . '://' . $parsed_url['host'];

// 创建一个新的 XML 文档对象，指定编码为 GBK
$dom = new DOMDocument("1.0", "GBK");

// 创建根元素 <urlset>
$root = $dom->createElement("urlset");
$dom->appendChild($root);

// 数组用于存储已经添加的链接
$addedUrls = array();

// 添加首页地址到 <urlset>，并设置优先级为1
addUrlToSitemap($root, $homepage, "1");
$addedUrls[] = $homepage;

// 获取网页内容
$html = file_get_contents($homepage);

if ($html !== false) {
    // 转换 HTML 内容为 GBK 编码
    $html = mb_convert_encoding($html, "HTML-ENTITIES", "GBK");

    // 创建 DOMDocument 对象并加载 HTML 内容
    $doc = new DOMDocument();
    libxml_use_internal_errors(true); // 忽略 HTML 解析时的错误和警告
    $doc->loadHTML($html);
    libxml_clear_errors();

    // 获取页面内所有 <a> 标签
    $links = $doc->getElementsByTagName('a');

    foreach ($links as $link) {
        $href = $link->getAttribute('href');

        // 绝对链接处理：如果链接以 / 开头，则视为相对于首页的链接
        if (strpos($href, '/') === 0) {
            $url = rtrim($homepage, '/') . $href;
        } elseif (strpos($href, $homepage) === 0) {
            $url = $href;
        } else {
            continue; // 跳过非本站链接
        }

        // 检查链接是否已经添加过，如果已经添加则跳过
        if (in_array($url, $addedUrls)) {
            continue;
        }

        // 添加链接到 sitemap，并设置优先级为0.8
        addUrlToSitemap($root, $url, "0.8");
        $addedUrls[] = $url;
    }
}

// 输出 XML 内容（转换为 GBK 编码）
echo mb_convert_encoding($dom->saveXML(), "GBK", "UTF-8");

// 将链接添加到 sitemap 的函数
function addUrlToSitemap($root, $url, $priority)
{
    global $dom;

    // 创建 <url> 元素
    $urlElement = $dom->createElement("url");

    // 创建 <loc> 元素，设置链接地址
    $loc = $dom->createElement("loc", htmlspecialchars($url));
    $urlElement->appendChild($loc);

    // 创建 <lastmod> 元素，设置最后修改时间为当前时间
    $lastmod = $dom->createElement("lastmod", date("Y-m-d"));
    $urlElement->appendChild($lastmod);

    // 创建 <changefreq> 元素，设置更新频率为 daily (每天更新)
    $changefreq = $dom->createElement("changefreq", "daily");
    $urlElement->appendChild($changefreq);

    // 创建 <priority> 元素，设置优先级
    $priorityElement = $dom->createElement("priority", $priority);
    $urlElement->appendChild($priorityElement);

    // 将 <url> 元素添加到根元素 <urlset> 中
    $root->appendChild($urlElement);
}
?>