Domanda

Ho uno script per caricare file e assegnare loro un nome numerico (diciamo 1-15) e quando elimino un file (numero diciamo 5) Voglio che i file da rinominare 1-14. Questo funziona bene se elimino un file di 9 e sotto, se elimino qualcosa di più di 10 cancella più file. Per quanto posso dire che il problema non è con l'eliminazione, ma la ridenominazione

Ecco il pezzo di sceneggiatura Ho problemi con:

unlink($path.$img);

$files = natsort(glob("$path/*.jpg"));

$num = 1;

foreach($files as $file) {
  $new = 'photo' . $num . '.jpg'; 
  rename($file, dirname($file).'/'.$new);
  $num++;
}

Grazie!

È stato utile?

Soluzione

esempio di lavoro da php.net

 <?php 
$path = "E:\\SERVER\\sudhir\\songs"; 
$dh = opendir($path); 
$i=1; 
while (($file = readdir($dh)) !== false) { 
    if($file != "." && $file != "..") { 
        echo "<br/>".substr($path."\\".$file, 0,-3)."_mysongs_mp3"; 
        rename($path."\\".$file, substr($path."\\".$file, 0,-3)."_mysongs_mp3"); 
        $i++; 
    } 
} 
closedir($dh); 
?>

Altri suggerimenti

Questo è dovuto al fatto che si sta sovrascrivendo i file mentre si rinomina.

Immaginate il seguente elenco di file dopo l'eliminazione di file 11:

1
10
12
2
3
4
5
...

Se ora si avvia la ridenominazione, accade quanto segue:

1 -> 1
10 -> 2
12 -> 3
2 -> already overwritten by 10!

Una soluzione:. Trova le array utilizzando natsort($files) prima di rinominare

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top