Heim  >  Artikel  >  Backend-Entwicklung  >  php生成site地图的案例

php生成site地图的案例

WBOY
WBOYOriginal
2016-06-13 13:15:59919Durchsuche

php生成sitemap的案例

PHP code
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--><?PHP $content='<?xml version="1.0" encoding="UTF-8"?>
<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">
';
//下边这段代码为指定数据,但是实际需求是要通过sql来完成
$data_array=array(
    array(
        'loc'=>'http://www.sslook.com/',
        'priority'=>'1.0',
        'lastmod'=>'2012-06-03T04:20:32-08:00',
        'changefreq'=>'always'
    ),
    array(
        'loc'=>'http://www.sslook.com/',
        'priority'=>'0.5',
        'lastmod'=>'2012-06-03T04:20:32-08:00',
        'changefreq'=>'daily'
    )
);
foreach($data_array as $data){
    $content.=create_item($data);
}
$content.='</urlset>';
$fp=fopen('sitemap.xml','w+');
fwrite($fp,$content);
fclose($fp);

function create_item($data){//目前测试是这个函数处理之后就会数据混乱
    $item="<url>\n";
    $item.="<loc>".$data['loc']."</loc>\n";
    $item.="<priority>".$data['priority']."</priority>\n";
    $item.="<lastmod>".$data['lastmod']."</lastmod>\n";
    $item.="<changefreq>".$data['changefreq']."</changefreq>\n";
    $item.="</url>\n";
    return $item;
}

代码中数组赋值的地方,换成通过sql语句来做的话要怎么做?我是下边这样,但是测试输出的xml文件全都是hhh...什么的。
PHP code
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
$query = sql语句;
$result = mysql_query($query);
while($row = mysql_fetch_array($result))
{    $data_array['loc']="http://zufang.sslook.com/sh/$ran/$row[0]";
    $data_array['priority']='1.0';
    $data_array['lastmod']='2012-12-12';
    $data_array['changefreq']='weekly';
    }



------解决方案--------------------
while($row = mysql_fetch_array($result))
{ $data_array['loc']="http://zufang.sslook.com/sh/$ran/$row[0]";
$data_array['priority']='1.0';
$data_array['lastmod']='2012-12-12';
$data_array['changefreq']='weekly';
}
这个while再次循环时,数组值data_array又被覆盖了,所以最终就一个值了,添加flag
改为以下,都是hhh什么意思,数据库里东西吗,发出来看一下
PHP code

$i= 0;
while($row = mysql_fetch_array($result))
{    $data_array[$i]['loc']="http://zufang.sslook.com/sh/$ran/$row[0]";
    $data_array[$i]['priority']='1.0';
    $data_array[$i]['lastmod']='2012-12-12';//这些都被你定死了
    $data_array[$i]['changefreq']='weekly';
    ++$i;
    } <div class="clear">
                 
              
              
        
            </div>
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel: PHP框架3(视图) Nächster Artikel: .htaccess的伪静态规则