ホームページ  >  記事  >  バックエンド開発  >  phpでサイトマップを生成する例

phpでサイトマップを生成する例

WBOY
WBOYオリジナル
2016-06-13 13:15:59919ブラウズ

PHPでサイトマップを生成する場合

PHPコード
<!--

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ファイルはすべてああ...とかなんとかです。
PHP コード
<!--

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が再度上書きされるので、最終的には値が1つだけになるので、flag
を追加して次のように変更します。これはデータベース内の何かですか?送信して見てください
PHP コード

$i= 0;
while($row = mysql_fetch_array($result))
{ $data_array[$i]['loc']="http://zufang.sslook.com/sh/$ran/$row[0]";
    $data_array[$i]['優先順位']='1.0';
    $data_array[$i]['lastmod']='2012-12-12';//これらはすべてあなたによって決定されます
    $data_array[$i]['changefreq']='毎週';
    ++$i;
    <div class="clear"></div>
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。