创建PHP站点地图XML脚本

时间:2015-01-09 16:06:52

标签: php xml sitemap

我有一个数据库驱动的网站,我每天都会加入这个网站。我想用谷歌制作一个xml的谷歌站点地图,但我真的不确定如何做到这一点。使用我曾经创建过的代码:

<?php
$get_articles_sql = "SELECT * FROM articles ORDER BY added DESC";
$get_articles_res = mysqli_query($con, $get_articles_sql);
while($article = mysqli_fetch_assoc($get_articles_res)){
    $article_id = $article["id"];
    $article_title = $article["title"];
    $article_added = $article["added"];
    $article_date = date('Y-M-D', strtotime($article_added));

    $article_url_title = preg_replace('/[^a-zA-Z0-9_ %\[\]\.\(\)%&-]/s', '', $article_title);
    $article_url_title = strtolower(str_replace(" ","-",$article_url_title));

    $list_articles .= "

        <url>
            <loc>http://www.website.com/article.php?id=$article_id&title=$article_url_title</loc>
            <lastmod>$article_date</lastmod>
            <changefreq>monthly</changefreq>
            <priority>0.8</priority>
        </url>

    ";
?>
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
   <url>
      <loc>http://www.website.com</loc>
      <lastmod>2005-01-01</lastmod>
      <changefreq>daily</changefreq>
      <priority>1.0</priority>
   </url>
   <?php echo $list_articles; ?>
</urlset>

但是,这会在<?xml行返回错误。是否有正确的方法使用我使用的代码方法?

1 个答案:

答案 0 :(得分:0)

您的服务器可能启用了短标记,这会导致XML声明中的<?抛出解析错误。最简单的解决方法是只排除echo

echo '<?xml version="1.0" encoding="UTF-8"?>'
?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">

看起来你似乎错过了你的while循环的结束括号,但我认为这只是一个错字。

相关问题