XML自动站点地图,是不可能的?

时间:2014-01-30 15:26:51

标签: php html xml sitemap

我想创建一个XML站点地图(为了SEO),我首次尝试实现这一点是通过使用<?php include ("assets/includes/menu.inc"); ?>包含网站主菜单/导航链接:

<li><a href="index.php">Home</a></li>
<li><a href="gallery.php">Gallery</a></li>
<li><a href="contact.php">Contact</a></li>

到以下XML站点地图文件:

<?xml version="1.0" encoding="UTF-8"?>

    <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">

        <url><loc>http://www.example.com/</loc></url> 

    </urlset>

我已经问过question here“如何将PHP包含到XML中” - 显然我不能这样做,所以我的想法被抛到了垃圾箱。我已经用Google搜索了“如何创建自动站点地图”,但我发现的所有内容都是Sitemap Generators,我正在努力避免。

问题是,甚至可能吗?创建一个站点地图,从网站主.inc文件中提取链接?有什么想法吗?

1 个答案:

答案 0 :(得分:1)

如果您安装了DOM扩展程序,则可以加载HTML导航,然后创建XML站点地图。

// Create an empty document, load it with your HTML
$dom = new DOMDocument('1.0', 'utf-8');
$dom->loadHTML('<li><a href="index.php">Home</a></li>...');

// Get links
$links = array();
foreach($dom->getElementsByTagName('a') as $link){
    $links[] = $link->getAttribute('href');
}

现在我们在$links中有一系列相对网址。您现在可以使用DOM扩展名生成XML文档(推荐但更复杂),或直接使用$links生成输出:

<?php echo '<?xml version="1.0" encoding="UTF-8"?>'; // Be wary of "?>" in your document ?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
    <?php foreach($links as $link): ?>
        <url><loc>http://www.mydomain.com<?php echo htmlspecialchars($link, ENT_XML1, 'UTF-8'); ?></loc></url>
    <?php endforeach; ?>
</urlset>