id)) { // タグだったら・・・ if($node->id == TIDY_TAG_A) { // href属性を取得する( name属性は取得しない ) $urls[] = $node->attribute['href']; } } if($node->hasChildren()) { foreach($node->child as $c) { dump_nodes($c, $urls); } } return $urls; } ?> seesaa blogの サイト一覧を(嘘っぽく)作る ' .'URL:
' .'
' .''; }else{ // $sitelist がGETメソッドで引数が渡されていれば if (strchr($sitelist , "seesaa.net/")){ $utmp = explode( ".",$sitelist); $utmp2 = explode( "/" ,$utmp[0]); $username = $utmp2[2]; echo $username; // データ一時取得用ファイルのファイル名 define("SITECONTENTS_LOG","contents.log"); // Google SiteMaps のファイル名 $SITEMAPS_LOG = $username.".xml"; echo '
' .'URL:
' .'
' .'
' .'
時間掛かるけどちょっとまってね
'; // function curl_string()を使って $sitelist のデータを取得する curl_string($sitelist); // $tidyData に取得したデータ(SITECONTENTS_LOG)を格納 $tidyData = tidy_parse_file(SITECONTENTS_LOG); // tidy の cleanRepair でちょいと整理 $tidyData->cleanRepair(); // fuction dump_nodes() でhref属性をGET($urlgroupの配列に格納) $urlgroup = dump_nodes($tidyData->html()); // 配列 $urlgroup 内でもし重複しているURLがあったら重複しているデータは除く $urlgroup = array_unique($urlgroup); // 別にソートする必要ないけどとりあえずソート // UNIXで // cat hoge.txt | sort | uniq > hoge2.txt // ってするよーなイメージ sort($urlgroup); echo "
";
		print 'index    '.$sitelist.'
'; print 'RDF '.$sitelist.'index.rdf
'; // ファイル書き込み開始 $fps = fopen($SITEMAPS_LOG,"w"); fwrite( $fps , ''."\n"); fwrite( $fps , ''."\n"); fwrite( $fps , ''."\n"); fwrite( $fps , "\t".$sitelist.""."\n"); fwrite( $fps , "\t1.0"."\n"); fwrite( $fps , ''."\n"); fwrite( $fps , ''."\n"); fwrite( $fps , "\t".$sitelist.""."\n"); fwrite( $fps , ''."\n"); // 配列$urlgroup の要素からひとつづつ取って$tmpに格納 // ここで注意するのはトップページにカテゴリ一覧または、月別アーカイブ一覧がないと取得できない foreach ( $urlgroup as $tmp ) { // 以下の条件を満たすURLなら次のステップに進む // $sitelistで始まっているURL または [/]で始まっているURL // 且つ、NAME属性の[#]をふくまない if ( ( ( strpos($tmp,$sitelist)===0 ) or ( strpos($tmp,'/')===0 ) ) and ( strpos($tmp,'#')===FALSE )){ // [category/]で始まっていたら、配列 $catetoryUrl にURLを追加 if ( strpos($tmp,$sitelist.'category/')===0 ){ fwrite( $fps , ""."\n"); fwrite( $fps , "\t"); fwrite( $fps , $tmp."\n"); fwrite( $fps , ""."\n"); fwrite( $fps , ""."\n"); print 'category '.$tmp.'
'; // 配列 $catetoryUrlにURLを追加 array_push($catetoryUrl, $tmp); }elseif ( strpos($tmp,'/archives/')===0 ){ // URLに[/archive/]を含んでいれば // $sitelistは[http://xxxx.seesaa.net/]の形式になっているが // このまま[/archive/]と連結させてしまうと // http://xxxx.seesaa.net//archive/ // と[/]が2つ重なるので $sitelist の最後の[/]を取る $chopUrl = substr( $sitelist, 0, strlen($sitelist) - 1 ); fwrite( $fps , ""."\n"); fwrite( $fps , "\t"); fwrite( $fps , $chopUrl); fwrite( $fps , $tmp."\n"); fwrite( $fps , ""."\n"); fwrite( $fps , ""."\n"); print 'archives '.$chopUrl.$tmp.'
'; // 配列 $archivesUrlにURLを追加 array_push($archivesUrl, $tmp); } } } // $catetoryUrl(カテゴリ一覧)がNULLでなければ(=トップページでカテゴリ一覧URLを取得できていれば) if (!empty($catetoryUrl)) { // トップページにカテゴリをいくつも表示している人はないとは思うが、 // もし重複があったら重複しているデータは除く $catetoryUrl = array_unique($catetoryUrl); // 別にソートする必要ないけどとりあえずソート sort($catetoryUrl); // 配列 $catetoryUrl の要素からひとつづつ取って $targetUrl に格納 foreach ($catetoryUrl as $targetUrl) { // function curl_string()を使って $targetUrl のデータを取得する curl_string($targetUrl); $tidyData = tidy_parse_file(SITECONTENTS_LOG); $tidyData->cleanRepair(); $urlgroup = dump_nodes($tidyData->html()); foreach ( $urlgroup as $tmp ) { // http://xxx.seesaa.net/article/ の形式のURLになっていれば if ( ( strpos($tmp,$sitelist.'article/')===0 ) and (strpos($tmp,'#')===FALSE) ){ // 配列 $articleUrl にURLを追加 array_push($articleUrl, $tmp); echo $tmp."
"; } } } } elseif (!empty($archivesUrl)) { // トップページでカテゴリ一覧URLを取得できていなければ // 変わりに月別アーカイブからの取得を試みる // やってることは上で記載したことと殆ど同じなので説明省略 $archivesUrl = array_unique($archivesUrl); sort($archivesUrl); foreach ($archivesUrl as $targetUrl) { curl_string($targetUrl); $tidyData = tidy_parse_file(SITECONTENTS_LOG); $tidyData->cleanRepair(); $urlgroup = dump_nodes($tidyData->html()); foreach ($urlgroup as $tmp ) { if ( ( strpos($tmp,$sitelist.'article/')===0 ) and (strpos($tmp,'#')===FALSE) ){ array_push($articleUrl, $tmp); echo $tmp."
"; } } } } // 今まで配列 $articleUrl に格納していたものをここで全て表示してみる。 if (!empty($articleUrl)) { $articleUrl = array_unique($articleUrl); sort($articleUrl); foreach ($articleUrl as $targetUrl) { fwrite( $fps , ""."\n"); fwrite( $fps , "\t"); fwrite( $fps , $targetUrl); fwrite( $fps , ""."\n"); fwrite( $fps , ""."\n"); print 'article '.$targetUrl.'
'; } } echo "
"; fwrite( $fps , ''."\n"); fwrite( $fps , "\t".$sitelist."index.rdf"."\n"); fwrite( $fps , ''."\n"); fwrite( $fps , ""."\n"); // sitemapsファイルを閉じる fclose( $fps ); echo "終了"; echo '
'.$SITEMAPS_LOG.''; // 終わった・・・・ }else{ echo $urllist." は seesaa.net/ の形式になっていません。
"; } } ?>