Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    "Invertire" funzione di uno script che cancella file di una determinata estensione

    Codice PHP:
    <?

    foreach (glob("folder/*.txt") as $filename) {
          
    unlink($filename);
    }

    ?>
    Questo script cancella tutti i file che si trovano nella cartella "folder" e hanno l'estensione .txt, potete farmi uno script, o almeno darmi istruzioni molto dettagliate su come farlo (di php so poco e niente), che abbia la funzione di cancellare TUTTI i file presenti nella cartella, tranne quelli con delle determinate estensioni (almeno 3 estensioni di esempio)?
    Grazie.

  2. #2
    beh ti basta lanciare prima

    http://it2.php.net/glob

    su *.*

    e salvi l'array in una variabile

    poi

    http://it2.php.net/glob (passando xo il parametri GLOB_BRACE tra i flags)

    su *.{ext1,ext2,ext3}

    e salvi l'array in una variabile

    dopo di che lanci un bel

    http://it2.php.net/manual/it/function.array-diff.php

    in questo modo

    $filesDaCancellare = array_diff($filesDaNonCancellare, $filesTutti);

    e poi nel foreach al posto del glob metti $filesDaCancellare facendo quindi

    foreach ($filesDaCancellare as $filename) {
    unlink($filename);
    }

    (ovviamente provalo prima xche è sempre meglio ^^)

  3. #3
    Non ho capito niente

  4. #4
    codice:
    $filesTutti = glob('path/*.*');
    $filesDaNonCancellare = glob('path/*.{ext1,ext2,ext3}', GLOB_BRACE);
    $filesDaCancellare = array_diff($filesDaNonCancellare, $filesTutti); 
    foreach ($filesDaCancellare as $filename) {
      unlink($filename);
    }

  5. #5
    Grazie, ma non funziona.
    Forse bisogna mettere prima tutti e poi non cancellare nell'array?

    EDIT:
    Ho provato, era x quello che avevo detto io, grazie 1000!

  6. #6
    Originariamente inviato da avrilboi
    Grazie, ma non funziona.
    Forse bisogna mettere prima tutti e poi non cancellare nell'array?
    uops (so fagian)

    si devono essere invertiti

    (il bello è che era scritto chiaramente array_diff() restituisce un array contenente tutti i valori di array1 che non sono presenti in alcuno degli altri array. Si noti che le associazioni con le chiavi vengono mantenute.)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.