PHP umbenennen numerisch alle Dateien im Verzeichnis
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!
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