2017-05-28 124 views
0

我正在寻找一个简单的脚本生成一个动态地图,当我遇到我有什么下面传来:PHP:创建动态地图

<?php 
    header("Content-Type: application/xml; charset=utf-8"); 
    echo '<?xml version="1.0" encoding="UTF-8"?>'.PHP_EOL; 
    echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">' .PHP_EOL; 

    function urlElement($url) { 
     echo '<url>'.PHP_EOL; 
     echo '<loc>'.$url.'</loc>'. PHP_EOL; 
     echo '<changefreq>weekly</changefreq>'.PHP_EOL; 
     echo '</url>'.PHP_EOL; 
    } 

    urlElement('https://www.example.com/sub1'); 
    urlElement('https://www.example.com/sub2'); 
    urlElement('https://www.example.com/sub2'); 
    echo '</urlset>'; 
?> 

上面的代码工作完全生成指定的网址的Sitemap,但我需要的东西可以循环访问指定的URL并获取它们上的所有链接以创建单个站点地图,同时忽略重复的链接。

+0

将你的URL存储在一个数组中,然后在数组上做一个'foreach()'并在循环中调用'urlElement($ value);'。 –

+0

嗨,谢谢你的建议,但是我的知识在这方面有限,你能帮助你刚才建议的吗? – user2969009

+0

见我的回答如下,感谢 –

回答

0

Store中的数组中的网址,然后做一个foreach()阵列上,并调用urlElement($值);关于循环内的值。

<?php 

    function urlElement($url) { 
     echo '<url>'.PHP_EOL; 
     echo '<loc>'.$url.'</loc>'. PHP_EOL; 
     echo '<changefreq>weekly</changefreq>'.PHP_EOL; 
     echo '</url>'.PHP_EOL; 
    } 

    $urls = array(
     "http://www.google.com", 
     "http://www.google.com/images", 
     "http://www.google.com/maps" 
    ); 



    header("Content-Type: application/xml; charset=utf-8"); 
    echo '<?xml version="1.0" encoding="UTF-8"?>'.PHP_EOL; 
    echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">' .PHP_EOL; 

    foreach($urls as $value) { 
     urlElement($value); 
    } 

    echo '</urlset>'; 
?> 
+0

做到这一点,最好的办法是所有存储在数据库中的链接,如果你没有一个静态的网站,只要添加一个内部链接,你将它添加到数据库中 - 那么你读取数据库并将信息拖入'$ url'数组中。目前还没有一个快速解决方案,并且需要在您的网站上进行一些编程才能使其工作。 或者,你可以使用像'的file_get_contents()'和使用正则表达式搜索任何''标签,并将其存储在一个数组,但是这是非常糟糕的资源,如果你这样做的每一页,每加载站点地图的时间。 –

+0

以下是我从你的代码了动态获取内容:每周每周每周 – user2969009