Ankündigung

Einklappen
Keine Ankündigung bisher.

bestimmte dateien nicht anzeigen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • bestimmte dateien nicht anzeigen

    Hallo
    Ich lese ein Verzeichniss und gebe die Dateien/Unterverzeichnisse aus.
    Nun haette ich gerne alle Dateien/Verz. die nicht ".", "..", "inc", "img", oder "index.php" heissen:


    if ($file != "." && $file != ".." && $file != "inc" && $file != "img" && $file != "index.php")

    {

    gebe liste aus

    }

    jetzt sollten aber auch alle dateien die mit .pdf enden nicht ausgegeben werden. leider koennen diese dateien irgendwie heissen.

    wie mache ich das?

    kann mich jemand auf den pfad der erleuchtung fuehren? :P

    merci
    tlz


  • #2
    Hi.

    Das könnte z.B. so aussehen:

    PHP-Code:
    <?php
    $Dir 
    dir('.');
    while(
    false !== ($sEntry $Dir->read())) {

        switch (
    true) {

            case (
    $sEntry === '.'):
            case (
    $sEntry === '..'):
            case (
    $sEntry === 'inc'):
            
    // ...
            
    case (preg_match('|.pdf$|'$sEntry)):
            break;

            default:
            print 
    "$sEntry
    "
    ;
        }
    }
    ?>
    Du kannst natürlich auch beim if bleiben. Ich finde es so allerdings mitunter übersichtlicher. "file" als Name für eine Variable, die einen Verzeichniseintrag enthält ist übrigens vielleicht ein wenig missverständlich.

    Basti

    Kommentar


    • #3
      klapp mit anpassungen und weitere Fragen

      hmm. klappt mit Anpassungen gut:

      Code:
      <?
      $Dir = $_GET['path'];
      	if(!isset($Dir)) { $Dir = ".";}
      	if ($handle = opendir($Dir))
         {
      	  while (false !== ($sEntry = readdir($handle)))
      		{
      		   switch (true) {
      		
      		      case ($sEntry === "."):
      		      case ($sEntry === ".."):
      		      case ($sEntry === "inc"):
      			  case ($sEntry === "img"):
      			  case ($sEntry === "index.php"):
      		      // ...
      		      case (preg_match("|.pdf$|", $sEntry)):
      		      break;
      		      default:
      			  if(is_file($sEntry))
                    {
      		   	  	echo "$sEntry
      ";
      			  }
      		}
         }
      } 
      ?>
      Wieso muessen die einzelnen leeren case Anweisungen keine Breaks haben?

      Du hast z.T. Hochkommas ' Anstatt wie ich DoppelteHochkommas " genommen. Warum?

      und dein $Dir->read() gab bei mir ein fatal Error. Ist das pear?

      merci
      thomas

      Kommentar


      • #4
        Re: klapp mit anpassungen und weitere Fragen

        Hi Thomas.

        Zitat von whiteflea
        Wieso muessen die einzelnen leeren case Anweisungen keine Breaks haben?
        Schau dir nochmal die Funktionsweise im Handbuch an:
        http://php.net/manual/en/control-structures.switch.php
        Am dritten Beispiel wird dieser Punkt erläutert.

        Wenn du switch nehmen möchtest, dann solltest du aber auch alle Bedingungen da reinsetzen ... oder eben alles mit if machen.

        PHP-Code:
        <?php
        switch (true) {

            case (
        $sEntry === "."):
            
        // ...
            
        case (!is_file($sEntry)):
            break;

            default:
            echo 
        "file: $sEntry
        "
        ;

        ?>
        Übrigens solltest du die Foren-Tags [ php ] anstatt [ code ] nehmen, wenn du hier PHP-Code abdruckst.

        Du hast z.T. Hochkommas ' Anstatt wie ich DoppelteHochkommas " genommen. Warum?
        Ich mag es, Anweisungen explizit zu geben und so neme ich immer Hochkommata, da der Inhalt zwischen diesen dann nicht angerührt wird. Ist aber einfach nur meine Gewohnheit und nicht wichtig.

        und dein $Dir->read() gab bei mir ein fatal Error. Ist das pear?
        Nein, kein PEAR. Die Funktion dir($sFilename) gibt ein Dir-Objekt zurück, dass eben z.B. die Methode Dir::read() kennt.
        http://php.net/manual/en/class.dir.php

        Du kannst aber natürlich auch mit opendir() arbeiten.

        Basti

        Kommentar

        Lädt...
        X