webForumDet fria alternativet

lista .txt filer

PHP

2 svar · 411 visningar · startad av mr.mainline

Medlem sedan feb. 2003777 inlägg
Frågan#1

Har lite frågor om hur jag ska gå till väga.

1.jag har en mapp där det skapas .txt filer, och vill kunna lista dessa.

2.sen vill jag kunna ta bort vissa hur gör jag det?

Medlem sedan sep. 200522 inlägg
#2

Du kan ju fula dig med att typ köra typ

shell_exec('ls -l | grep .txt');

Sedan kan du ju fortsätta med att köra lite cut för att endast få ut namnet osv. Detta exempel förusätter att du har Linux.

Finns säkert mycket bättre exempel men jag har aldrig gjort något liknande innan.

EDIT: För att ta bort en fil kör du unlink().

Medlem sedan jan. 2005110 inlägg
#3

Har en gammal hemmasnickrad funktion som har fungerat bra för mig.

function EnumFiles($Dir, $CallbackFunctionName, $Extensions = array(), $Recursive = False){
  $DirHandle  = opendir($Dir);

  while ( ($Filename = readdir($DirHandle)) !== False ) {
      if( ($Filename == '.') or ($Filename == '..') )
          continue;

      $Filename = $Dir . '/' . $Filename;

      // Callback if filename ends with $Extension (if $Extension is specified)
      $pathinfo = pathinfo( $Filename );
      if( is_file($Filename) and (empty($Extensions) or in_array(strtolower($pathinfo['extension']), $Extensions)) ){
          if (call_user_func($CallbackFunctionName, $Filename) === False)
              return False;
      }

      // Enum subfolder if $Recursive is True
      if( is_dir($Filename) and $Recursive){
          if( EnumFiles($Filename, $CallbackFunctionName, $Extensions, $Recursive) === False)
              return False;
      }
  }

  closedir($DirHandle);
}

$Dir är alltså sökvägen till katalogen.
$CallbackFunctionName är namnet på den funktion som ska köras för varje hittad fil.
$Extensions är en array med filändelser.
$Recursive bestämmer ifall sökningen ska ske rekursivt, dvs i alla underkataloger också.

Ett exempel kan behövas:

function printfilename( $filename ){
    print $filename . '<br>';
    return True;
}

EnumFiles( './images', 'printfilename', array('jpg', 'gif'), False );

Som du ser ska "callbackfunktionen" ta ett enda argument, nämligen filnamnet. Funktionen kan returnera antingen True eller False. Returnerar den True så fortsätter sökningen, returnerar den False avbryts sökningen. Alltså är det mycket viktigt att du returnerar True (om du inte vill avbryta sökningen förstås).

  1. unlink() - http://se2.php.net/manual/en/function.unlink.php
261 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)