Frage

Ich habe ein Skript zum Hochladen von Dateien und benennen Sie sie numerisch (sagen 1-15) und wenn ich eine Datei (zB Nummer 5) löschen möchte ich die Dateien 1-14 umbenannt werden. Dies funktioniert in Ordnung, wenn ich eine Datei 9 und unter löschen, wenn ich lösche etwas über 10 es mehrere Dateien löscht. Soweit ich das Problem sagen kann, ist nicht mit dem Löschen aber die Umbenennung

Hier ist das Stück Skript Ich habe Probleme mit:

unlink($path.$img);

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

$num = 1;

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

Danke!

War es hilfreich?

Lösung

Arbeitsbeispiel von 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); 
?>

Andere Tipps

Das ist, weil Sie Dateien zu überschreiben, während Sie umbenennen.

Stellen Sie sich folgende Dateiliste, nachdem Sie gelöschte Datei 11:

1
10
12
2
3
4
5
...

Wenn Sie nun die Umbenennung starten, geschieht Folgendes:

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

Eine Lösung:. Sortieren Sie Ihre Array mit natsort($files) vor dem Umbenennen

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top