 与 PHP 结束标签混淆
$out  = '<' . '?xml version="1.0" encoding="UTF-8"' . '?' . '>' . "\n";
$out .= '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">' . "\n";

$add = function ($loc, $pri = '0.6', $change = 'daily') use (&$out, $base) {
    $loc = htmlspecialchars($loc, ENT_QUOTES, 'UTF-8');
    $out .= "  <url>\n    <loc>{$loc}</loc>\n"
          . "    <changefreq>{$change}</changefreq>\n"
          . "    <priority>{$pri}</priority>\n  </url>\n";
};

$add($base . '/', '1.0');
$add($base . '/series.php', '0.8');
$add($base . '/category.php', '0.7');

try {
    foreach (getCategories() as $c) {
        $add($base . '/category.php?c=' . urlencode($c['slug']), '0.7');
    }
    $rows = dbQuery('SELECT slug, published_at FROM videos WHERE status = 1 ORDER BY id DESC')->fetchAll();
    foreach ($rows as $r) {
        $add($base . '/video.php?v=' . urlencode($r['slug']), '0.9', 'weekly');
    }
    $ss = dbQuery('SELECT slug FROM series')->fetchAll();
    foreach ($ss as $s) {
        $add($base . '/series.php?s=' . urlencode($s['slug']), '0.8', 'weekly');
    }
} catch (Exception $e) {
    // 忽略
}

$out .= '</urlset>';
echo $out;
