Gå til innhold

Filer - Undermapper


Anbefalte innlegg

Hei!

 

Ta en titt på dette scriptet:


<html>

<head>

<style>

A:link { text-decoration: none; color : #000E10; }

A:visited { text-decoration: none; color : #000E10;}

A:hover { text-decoration: none; color : #1E3346;}

</style>

<title>Filkonvertering</title>

</head>

<?php



$web_dir_to = "http://web-adresse.com/doc2html/html/5.1%20Administrasjon%20og%20administrative%20stotteprosesser%20og%20tjenester/";



$from_directory = "D:htmlDoc2HTMLDoc5.1 Administrasjon og administrative stotteprosesser og tjenester";

$to_directory = "D:htmlDoc2HTMLHtml5.1 Administrasjon og administrative stotteprosesser og tjenester";



//Test for å se om det er mappe!

if (!is_dir($from_directory)) {

echo "Ugyldig mappe:<br>$from_directory!";

exit();

}

if (!is_dir($to_directory)) {

echo "Ugyldig mappe:<br>$to_directory!";

exit();

}





// Åpne mappen

  if ($handle = opendir($from_directory)) { 

echo "<b><font size=2 face=verdana>Liste over konverterte filer:</b><br><br>";

// Hent ut filene

       while (false !== ($file = readdir($handle))) {  

// Tar ikke med "." og ".."

          if ($file != "." && $file != "..") { 

                  // Sjekker filtype

                  $file_ext = strtolower (strrchr ($file, '.')); 

                  // Hvis filtypen er .doc

                  if ($file_ext==".doc") {

                 // Sjekker at det ikke er en word-temp-fil

                 if (substr($file, 0, 1)!="~") {

                  // Navnet på .htm-filen

                  $html_file = str_replace(".doc", ".htm", $file);

                 

                     // Full bane til word-filen

                  $full_from_path=$from_directory . "" . $file;

                  // Full bane til html-filen

                  $full_to_path=$to_directory . "" . $html_file;

                  // Full web-bane til filen

                  $full_web_to_path_html=$web_dir_to . "/" . $html_file;

                  $full_web_to_path_doc=$web_dir_to . "/" . $file;

                  $full_web_to_path_doc=str_replace("/html/", "/doc/", $full_web_to_path_doc);

                  

                  // Lager linker

                  echo "<a href="" . $full_web_to_path_html . "">" . (str_replace(".doc", '', $html_file)) . "</a><br>"; 



                  // Utfører kovnvertering

                  include 'convertor.php';

                  

                  // Sett inn "Utskrifts-vennlig versjon"

                  include 'print-version.php';

                  

                 }

                    } 

       }



       } 



   } 



   // Lukker mappen

closedir($handle);  



?>

 

Problemet er at jeg vil at den skal gjøre det samme på alle mappene som ligger under $from_directory.

Hvordan kan jeg lage et script som finner alle sub-dirs og kjører scriptet på de mappene også (og sub-dirs i sub-dirs, osv helt til det ikke er flere mapper)

 

En ting til:

Har problemer med at den tar kun filer med .doc-extension, ikke .DOC, .Doc, osv...

 

Noen forslag? :)

Takk på forhånd!

Lenke til kommentar
Videoannonse
Annonse
Du må bruke rekursjon.

 

Kan du forklare det nærmere?

Event. komme med ett eksempel? :)

 

Skjønner ikke helt hvordan jeg skal gjøre det... spesielt iom at jeg har undermapper i undermapper, osv...

 

Takk for kjapt svar!

Lenke til kommentar

hmmm...

 

Snekret sammet et forslag, men åpenbart litt for sent :-?

 

Nuh vel.. poster det likevel jeg, kan jo tenkes at andre har/får bruk for det en eller annen gang:

 




<?php



fncRecursiveDir(".");

function fncRecursiveDir($str_Dirs,$strTab='')

{

     if (!is_array($str_Dirs)) $str_Dirs = Array("$str_Dirs");



     foreach($str_Dirs as  $strDir)

     {

     echo("$strTab [Dir: $strDir]<br>");                       

                     

         $str_Array = Array();

         $lngCount = 0;



         $dh = opendir($strDir);                   

         while( false !== ($file = readdir($dh)) ) 

         {                                

              if(filetype("$strDir/$file")=="dir") 

              {                   

                  if(  ($file != ".") && ($file != "..")) 

                  { $str_Array[$lngCount++]="$strDir/$file";}

              }

              else

              {                   

                  //Her kommer kode som gjør et eller annet med filnavn

                  echo("$strTab - $file<br>");

              }

         }         

         

         echo("<br>");

         closedir($dh);         

         

         //Kalle funksjon rekursivt for alle underdir          

         fncRecursiveDir($str_Array,"$strTab &");

     }



}



?>

Lenke til kommentar

Takk likevel b-urn.. :)

 

Ett søk på Google ga meg denne koden:


<?php 

function RecurseDir($basedir, $AllDirectories=array()) { 

       #Create array for current directories contents 

       $ThisDir=array(); 

       #switch to the directory we wish to scan 

       chdir($basedir); 

       $current=getcwd(); 

       #open current directory for reading 

       $handle=opendir("."); 

       while ($file = readdir($handle)) { 

               #Don't add special directories '..' or '.' to the list 

               if (($file!='..') & ($file!='.')) { 

                       if (is_dir($file)) { 

                               #build an array of contents for this directory 

                               array_push($ThisDir,$current.'/'.$file); 

                       } 

               } 

       } 

       closedir($handle); 

       #Loop through each directory,  run RecurseDir function on each one 

       foreach ($ThisDir as $key=>$var) { 

               array_push($AllDirectories, $var); 

               $AllDirectories=RecurseDir($var, $AllDirectories); 

       } 

       #make sure we go back to our origin 

       chdir($basedir); 

       return $AllDirectories; 

} 

?> 

/* example */ 

<? 

$dirlist=RecurseDir("/home/ben"); 

foreach ($dirlist as $key=>$val) { 

   echo $val; 

} 

?> 

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...