29. august 2006 - 09:56
Der er
12 kommentarer og 1 løsning
automatisk sitemap
Hej exp´er Jeg bruger nedenstående script til at lave et sitemap - nu vil jeg gerne udvide den lidt. Er det muligt at udvide det sådan at Scriptet lister alle php og html filer der ligger under et domæne ? og ikke som det er nu kun php filer i en mappe -------------------------------------------- <?php function listdir($dir, $search) { $mappe = @opendir($dir) or die ("ikke fundet"); while($fil = readdir($mappe)) { if ($fil != "." && $fil != "..") { if (preg_match("/$search/i", $fil) && !is_dir($dir . $fil)) { $filer[] = $fil; } } } if (count($filer) != 0) { sort($filer); foreach ($filer as $fil) { $niceFil = substr($fil, 0, (strlen($fil) - 4) ); echo "<a href=\"$fil\">$niceFil</a> "; } } closedir($mappe); $mappe = @opendir($dir) or die ("ikke fundet"); while($fil = readdir($mappe)) { if ($fil != "." && $fil != "..") { if (is_dir($dir . $fil)) { listdir($dir .$fil ."/", $search); } } } } $search = "php"; $bunddir = "./"; listdir($bunddir, $search); ?> -------------------------------------
Annonceindlæg fra SuperOffice
29. august 2006 - 10:17
#1
det der er smart, jeg lytter lige med
29. august 2006 - 12:42
#2
Er det ikke bare: <?php function listdir($dir, $search) { $mappe = @opendir($dir) or die ("ikke fundet"); while($fil = readdir($mappe)) { if ($fil != "." && $fil != "..") { if (preg_match("/$search/i", $fil) && !is_dir($dir . $fil) && preg_match( "/(php|html?)$/", $file )) { $filer[] = $fil; } } } if (count($filer) != 0) { sort($filer); foreach ($filer as $fil) { $niceFil = preg_replace( "/(\w+)\.\w+$/", "\\1", $fil ); echo "<a href=\"$fil\">$niceFil</a> "; } } closedir($mappe); $mappe = @opendir($dir) or die ("ikke fundet"); while($fil = readdir($mappe)) { if ($fil != "." && $fil != "..") { if (is_dir($dir . $fil)) { listdir($dir .$fil ."/", $search); } } } } $search = "php"; $bunddir = "./"; listdir($bunddir, $search); ?>
29. august 2006 - 12:48
#3
kræver det ikke at php filen ligger i roden ?
29. august 2006 - 13:05
#4
Den kræver det samme som din oprindelige - jeg har bare rettet den lidt til... Jeg har lige lavet en anden en, som jeg selv godt kan lide: define( "PAD", 10 ); define( "FILES", "php,htm,html" ); function dirTree( $path, $level = 0 ) { $result = array(); $path .= ( substr( $path, -1 ) == '/' ? '' : '/' ); $dirs = glob( $path . "*", GLOB_ONLYDIR | GLOB_NOSORT ); natsort( $dirs ); foreach ( $dirs as $dir ) { echo str_repeat( "\t", $level ) . "<div style=\"margin-left: " . $level * PAD . "px; font-weight: bold\">" . basename( $dir ) . "</div>\n"; dirTree( $dir, $level + 1 ); } $tmp = glob( $path . "*.{" . FILES . "}", GLOB_NOSORT | GLOB_BRACE ); $files = array(); foreach ( $tmp as $file ) { if ( !is_dir( $file ) ) { $files[] = $file; } } natsort( $files ); foreach ( $files as $fil ) { $fname = preg_replace( "/(\w+)\.\w+$/", "\\1", basename( $fil ) ); echo str_repeat( "\t", $level ) . "<div style=\"margin-left: " . $level * PAD . "px\"><a href=\"$fil\">$fname</a></div>\n"; } } dirTree( "." );
29. august 2006 - 13:22
#5
jeg har valgt at ligge mit sitemap i en mappe så stien er
www.xdomain.dk/sitemap/index.php kan man fortælle scriptet at det skal tage alle filer under domænet og ikke kun i den mappe hvor det ligger ? (det er ok hvis du tager udgangspunk i din egen)
29. august 2006 - 13:26
#6
Ja, du kalder bare: dirTree( "../" ); for at gå én level tilbage, lige som du satte $bunddir på din egen :)
29. august 2006 - 13:27
#7
Du kan måske fjerne de steder hvor der står str_repeat( "\t", $level ) - det er bare for at kildekoden skulle se pæn ud, så det er ligegyldigt ;)
29. august 2006 - 13:33
#8
lige et lille spørgsmål. kan man få den til at udelukke bestemte mapper hvis der er nogen som man ikke vil have med på sitemappen? jeg vil godt oprette et nyt spørgsmål og give point for svar
29. august 2006 - 13:36
#9
godt spg :)
29. august 2006 - 13:37
#10
michealtryl, det er blot at lave et array med de mapper du ikke vil vise og lave en if her: foreach ( $dirs as $dir ) { echo str_repeat( "\t", $level ) . "<div style=\"margin-left: " . $level * PAD . "px; font-weight: bold\">" . basename( $dir ) . "</div>\n"; dirTree( $dir, $level + 1 ); } f.eks. $dontShow = array( "mappe/undermappe/", "hemmelig/" ); foreach ( $dirs as $dir ) { if ( !in_array( $dir, $dontShow ) ) { echo str_repeat( "\t", $level ) . "<div style=\"margin-left: " . $level * PAD . "px; font-weight: bold\">" . basename( $dir ) . "</div>\n"; dirTree( $dir, $level + 1 ); } }
29. august 2006 - 13:40
#11
ok så kommer den færdige kode til at se sådan ud ------------------------------- define( "PAD", 10 ); define( "FILES", "php,htm,html" ); function dirTree( $path, $level = 0 ) { $result = array(); $path .= ( substr( $path, -1 ) == '/' ? '' : '/' ); $dirs = glob( $path . "*", GLOB_ONLYDIR | GLOB_NOSORT ); natsort( $dirs ); $dontShow = array( "mappe/undermappe/", "hemmelig/" ); foreach ( $dirs as $dir ) { if ( !in_array( $dir, $dontShow ) ) { echo str_repeat( "\t", $level ) . "<div style=\"margin-left: " . $level * PAD . "px; font-weight: bold\">" . basename( $dir ) . "</div>\n"; dirTree( $dir, $level + 1 ); } } $tmp = glob( $path . "*.{" . FILES . "}", GLOB_NOSORT | GLOB_BRACE ); $files = array(); foreach ( $tmp as $file ) { if ( !is_dir( $file ) ) { $files[] = $file; } } natsort( $files ); foreach ( $files as $fil ) { $fname = preg_replace( "/(\w+)\.\w+$/", "\\1", basename( $fil ) ); echo str_repeat( "\t", $level ) . "<div style=\"margin-left: " . $level * PAD . "px\"><a href=\"$fil\">$fname</a></div>\n"; } } dirTree( "../" ); ------------------------
29. august 2006 - 13:52
#12
Hmm nej der var en fejl ang. foldere der skal skjules: define( "PAD", 10 ); // Pixels to indent each new level define( "FILES", "php,htm,html" ); // What file extensions to show // List of directories NOT to show in map $dontShow = array( "show_this/but_not_this", "secret", "admin" ); // Do not change this $prepared = false; function dirTree( $path, $level = 0 ) { global $dontShow, $prepared; $path .= ( substr( $path, -1 ) == '/' ? '' : '/' ); if ( !$prepared ) { $prepared = true; $n = count( $dontShow ); for ( $i = 0; $i < $n; $i++ ) { $dontShow[$i] = $path . $dontShow[$i]; } } $dirs = glob( $path . "*", GLOB_ONLYDIR | GLOB_NOSORT ); natsort( $dirs ); foreach ( $dirs as $dir ) { if ( !in_array( $dir, $dontShow ) ) { echo str_repeat( "\t", $level ) . "<div style=\"margin-left: " . $level * PAD . "px; font-weight: bold\">" . basename( $dir ) . "</div>\n"; dirTree( $dir, $level + 1 ); } } $tmp = glob( $path . "*.{" . FILES . "}", GLOB_NOSORT | GLOB_BRACE ); $files = array(); foreach ( $tmp as $file ) { if ( !is_dir( $file ) ) { $files[] = $file; } } natsort( $files ); foreach ( $files as $fil ) { $fname = preg_replace( "/(\w+)\.\w+$/", "\\1", basename( $fil ) ); echo str_repeat( "\t", $level ) . "<div style=\"margin-left: " . $level * PAD . "px\"><a href=\"$fil\">$fname</a></div>\n"; } } dirTree( "." ); Så er der kommenteret en LILLE smule også :)
Vi tilbyder markedets bedste kurser inden for webudvikling